我正在努力寻找看似非常简单的事情。我有一个包含很长字符串的pandas数据框。
df = pd.DataFrame({'one' : ['one', 'two',
'This is very long string very long string very long string veryvery long string']})
现在当我尝试打印时,我看不到完整的字符串,我只看到字符串的一部分。
我尝试了以下选项
print(df.iloc[2])
to_html
to_string
set_printoptions
对我的帮助。任何想法都赞赏。看起来很简单,但无法得到它!
答案 0 :(得分:101)
您可以使用options.display.max_colwidth
指定您希望在默认表示中看到更多内容:
In [2]: df
Out[2]:
one
0 one
1 two
2 This is very long string very long string very...
In [3]: pd.options.display.max_colwidth
Out[3]: 50
In [4]: pd.options.display.max_colwidth = 100
In [5]: df
Out[5]:
one
0 one
1 two
2 This is very long string very long string very long string veryvery long string
事实上,如果您只想检查一个值,通过访问它(作为标量,而不是像df.iloc[2]
那样的行),您还会看到完整的字符串:
In [7]: df.iloc[2,0] # or df.loc[2,'one']
Out[7]: 'This is very long string very long string very long string veryvery long string'
答案 1 :(得分:8)
另一种非常简单的方法是调用列表函数:
list(df['one'][2])
# output:
['This is very long string very long string very long string veryvery long string']
没有值得一提的是,修道院列出整列是不好的,但是对于一条简单的行 - 为什么不呢?
答案 2 :(得分:5)
另一种打印整个字符串的简便方法是在数据帧上调用values
。
df = pd.DataFrame({'one' : ['one', 'two',
'This is very long string very long string very long string veryvery long string']})
print(df.values)
输出将为
[['one']
['two']
['This is very long string very long string very long string veryvery long string']]
答案 3 :(得分:5)
将pd.set_option('display.max_colwidth', -1)
用于自动换行和多行单元格。
This是有关如何充分利用大熊猫的jupyters显示器的重要资源。
答案 4 :(得分:4)
这是你的意思吗?
In [7]: x = pd.DataFrame({'one' : ['one', 'two', 'This is very long string very long string very long string veryvery long string']})
In [8]: x
Out[8]:
one
0 one
1 two
2 This is very long string very long string very...
In [9]: x['one'][2]
Out[9]: 'This is very long string very long string very long string veryvery long string'
答案 5 :(得分:3)
我创建了一个小实用程序功能,对我来说很好
def display_text_max_col_width(df, width):
with pd.option_context('display.max_colwidth', width):
print(df)
display_text_max_col_width(train_df["Description"], 800)
我可以根据需要更改宽度的长度,而无需永久设置任何选项。
答案 6 :(得分:1)
我经常处理你描述的情况的方法是使用.to_csv()
方法并写入stdout:
import sys
df.to_csv(sys.stdout)
更新:现在应该可以使用None
代替sys.stdout
,效果相似!
这应该转储整个数据帧,包括任何字符串的全部内容。您可以使用to_csv参数来配置列分隔符,是否打印索引等。但它不如正确渲染它那么漂亮。
我最初发布此帖子是为了回答Output data from all columns in a dataframe in pandas
中有些相关的问题答案 7 :(得分:1)
只需在打印前在代码中添加以下行即可。
pd.options.display.max_colwidth = 90 # set a value as your need
您只需执行以下步骤即可设置其他附加选项,
您可以如下更改pandas max_columns功能的选项,以显示更多列
import pandas as pd
pd.options.display.max_columns = 10
(这将显示10列,您可以根据需要进行更改)
就像您可以更改显示的行数一样,显示如下以显示更多行
pd.options.display.max_rows = 999
(这允许一次打印999行)
这应该很好
请参考doc来为熊猫更改更多选项/设置
答案 8 :(得分:1)
如果您使用的是jupyter笔记本,还可以将pandas数据帧打印为HTML表,这将打印完整的字符串。
from IPython.display import display, HTML
display(HTML(df.to_html()))
输出
one
0 one
1 two
2 This is very long string very long string very long string veryvery long string
答案 9 :(得分:1)
在较新版本的熊猫中,使用:
pd.set_option('display.max_colwidth', None)