在 pandas 数据框中完全打印很长的字符串
Print very long string completely in pandas dataframe
我正在努力处理看似非常简单的 thing.I 有一个包含很长字符串的 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
- 其中一个 Whosebug 答案建议将列宽增加
使用 pandas 显示选项,这也不起作用。
- 我也不知道
set_printoptions
对我有什么帮助。
任何想法表示赞赏。看起来很简单,但是做不到!
这是你想做的吗?
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'
您可以使用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'
我经常处理你描述的情况的方法是使用.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
上的相关问题
另一种非常简单的方法是调用列表函数:
list(df['one'][2])
# output:
['This is very long string very long string very long string veryvery long string']
不值得一提,修道院列出整个列并不好,但对于简单的一行 - 为什么不呢
打印整个字符串的另一种更简单的方法是在数据帧上调用 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']]
使用 pd.set_option('display.max_colwidth', None)
自动换行和多行单元格。
This 是关于如何充分利用 jupyters 显示 pandas 的重要资源。
已编辑:
曾经是 pd.set_option('display.max_colwidth', -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 为 pandas
更改更多 options/settings
我创建了一个小的实用函数,这对我来说很有效
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)
我可以根据自己的需要更改长度或宽度,而无需永久设置任何选项。
如果您使用的是 jupyter 笔记本,您还可以将 pandas 数据帧打印为 HTML table,这将打印完整的字符串。
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
我正在努力处理看似非常简单的 thing.I 有一个包含很长字符串的 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
- 其中一个 Whosebug 答案建议将列宽增加 使用 pandas 显示选项,这也不起作用。
- 我也不知道
set_printoptions
对我有什么帮助。
任何想法表示赞赏。看起来很简单,但是做不到!
这是你想做的吗?
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'
您可以使用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'
我经常处理你描述的情况的方法是使用.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
上的相关问题另一种非常简单的方法是调用列表函数:
list(df['one'][2])
# output:
['This is very long string very long string very long string veryvery long string']
不值得一提,修道院列出整个列并不好,但对于简单的一行 - 为什么不呢
打印整个字符串的另一种更简单的方法是在数据帧上调用 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']]
使用 pd.set_option('display.max_colwidth', None)
自动换行和多行单元格。
This 是关于如何充分利用 jupyters 显示 pandas 的重要资源。
已编辑:
曾经是 pd.set_option('display.max_colwidth', -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 为 pandas
更改更多 options/settings我创建了一个小的实用函数,这对我来说很有效
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)
我可以根据自己的需要更改长度或宽度,而无需永久设置任何选项。
如果您使用的是 jupyter 笔记本,您还可以将 pandas 数据帧打印为 HTML table,这将打印完整的字符串。
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