Python Pandas防止单元格中的换行符

rryofs0p  于 2023-11-15  发布在  Python
关注(0)|答案(4)|浏览(173)

使用以下函数,我已经成功地防止了notebook中输出的截断:

pd.set_option('display.max_colwidth', 200)
pd.set_option('display.max_columns', 0)

字符串
但是,它仍然会打断某些单元格中的长行(而不是截断!)。如何防止它这样做?
(我不在乎总表有多宽,因为我可以简单地滚动笔记本单元格的输出.)

ztyzrc3y

ztyzrc3y1#

对我来说,pandas.set_option('display.expand_frame_repr', False)是由@EdChum建议的。

import pandas
matrix = [[None]*5]*4
matrix[1][1] = "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut"
matrix[1][4] = matrix[1][1]
print pandas.DataFrame(matrix) # will print the matrix,
# column 4 is completely underneath the other 3 columns with all rows

pandas.set_option('display.expand_frame_repr', False)
print pandas.DataFrame(matrix) # prints only one table (no break of columns)

字符串

jogvjijk

jogvjijk2#

这对我很有效,我使用python 2.7,并在Pycharm IDE上用3.6测试了它。

try:
    df = pd.read_excel(file,sheet_name="sheet", inplace=True, usecols="A,C:E")

    with pd.option_context('display.max_rows', 300, 'display.max_columns', 7, 'display.expand_frame_repr', False):
        print(df)

except:
    print ('failed')

字符串
然而,对于Xueyter Notebooks,我相信这是语法:

pd.options.display.max_rows

pd.set_option('display.max_colwidth', -1)

pd.DataFrame({'string_x': string_x}, index = [0])

qlvxas9a

qlvxas9a3#

这里没有一个解决方案在jupyter中对我有效,有效的是对CSS的吸引力:

from IPython.display import HTML
HTML(f"<style>td{white-space: nowrap !important;}</style>")

字符串
我还没有测试过,但这也可能起作用:

df.style.set_table_styles([{'selector': 'td', 'props': 'white-space: nowrap !important;'}])

yc0p9oo0

yc0p9oo04#

当str是中文字符时,这些设置不起作用。下面是我的解决方案:

import pandas as pd
num_columns = 25
data = {f'Column{i}': ['这是一个较长的字符串,可能会导致换行显示。', '短字符串1', '短字符串2'] for i in range(1, num_columns + 1)}
df = pd.DataFrame(data)
pd.set_option('display.max_columns', 20)  # Limit the display to 20 columns
pd.set_option('display.max_colwidth', 1000)  # Adjust based on your needs
pd.set_option('display.unicode.ambiguous_as_wide', True)  # Consider Unicode characters in width calculation

def format_strings(val):
    return f'<div style="white-space: nowrap; overflow: hidden; text-overflow: ellipsis;">{val}</div>'

styled_df = df.style.format(format_strings)

styled_df.set_table_styles([
{'selector': 'table', 'props': [('width', '100%')]}
])

styled_df

字符串

相关问题