Python 在数据框中完全打印很长的字符串
我正在努力解决一件看起来很简单的事情。我有一个包含很长字符串的熊猫数据帧Python 在数据框中完全打印很长的字符串,python,string,pandas,options,Python,String,Pandas,Options,我正在努力解决一件看起来很简单的事情。我有一个包含很长字符串的熊猫数据帧 df = pd.DataFrame({'one' : ['one', 'two', 'This is very long string very long string very long string veryvery long string']}) 现在,当我尝试打印相同的字符串时,我看不到完整的字符串,而是只看到字符串的一部分 我尝试了以下几种选择 使用打印(df.iloc[2]) 使用创建html
df = pd.DataFrame({'one' : ['one', 'two',
'This is very long string very long string very long string veryvery long string']})
现在,当我尝试打印相同的字符串时,我看不到完整的字符串,而是只看到字符串的一部分
我尝试了以下几种选择
- 使用
打印(df.iloc[2])
- 使用
创建html
- 使用
编辑字符串
- 其中一个stackoverflow答案建议将列宽增加 使用熊猫显示选项,这也不起作用
- 我也不知道
将如何帮助我set\u 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\u 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()
方法并写入标准输出:
import sys
df.to_csv(sys.stdout)
更新:现在应该可以使用None
而不是sys.stdout
,效果类似
这将转储整个数据帧,包括所有字符串。您可以使用to_csv参数来配置列分隔符、是否打印索引等。但是,与正确渲染相比,它会更不美观
我最初在上发布这篇文章是为了回答一些相关的问题。另一个非常简单的方法是调用列表函数:
list(df['one'][2])
# output:
['This is very long string very long string very long string veryvery long string']
不值得一提的是,这不利于convent列出整个列,但对于一个简单的行-为什么不打印整个字符串的另一个更简单的方法是在数据帧上调用
值
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\u选项('display.max\u colwidth',None)
这是一个很好的资源,关于如何充分利用大熊猫的jupyters展示
编辑:
以前是
pd.set\u选项('display.max\u colwidth',-1)
打印前只需在代码中添加以下行即可
pd.options.display.max_colwidth = 90 # set a value as your need
您只需执行以下步骤即可设置其他附加选项,
- 可以按如下所示更改pandas max_columns功能的选项以显示更多列
(这允许显示10列,您可以根据需要进行更改)import pandas as pd pd.options.display.max_columns = 10
- 这样,您可以根据需要更改行数以显示更多行,如下所示
(这允许一次打印999行)pd.options.display.max_rows = 999
请参阅以更改熊猫的更多选项/设置我已经创建了一个小的实用功能,这对我来说很好
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表格,该表格将打印完整的字符串
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
在熊猫的较新版本中,请使用:
pd.set_option('display.max_colwidth', None)
df.iloc[2,0]--不起作用-我将打印第一行和第三行并进行剪切(如果您想要第三行和第一列的元素,它确实起作用。如果您想要其他内容,请打开一个新问题。它起作用,thx!我在1列中有一个邮政编码列表,并使用apply通过一个函数:df['zipcodeMinMax']=df.loc[:,使用apply来查找最小和最大列,['zipcodeList']].apply(createMinMaxZipcode,axis=1)。因此在我所做的函数中,对序列上的字符串(stringZipcodes=zipcodeList.to_string(header=False,index=False))。较长的zipcodes列表会在末尾产生3个点,例如“1111…”。如果基于索引和列(作为标量)选择值,则不会发生这种情况。我的问题:为什么会出现这种行为?设置显示选项以影响应用对我来说似乎很奇怪?Thx!@Wouter如果你有不同的问题,最好问一个新的问题,而不是在这里发表评论。这不适用于更大的字符串,例如有多行的段落。如果你一直在根据某些搜索条件缩减df,并且这是最简单的方法,用于调试需求,我希望它能工作,但我不知道为什么不能。你会得到一个“***KeyError:0”。我猜这与像“标量”一样有关当只有一个值时。到目前为止,这将通过查询返回df中的所有字符,df返回两个包含127个字符的单元格,这是我在尝试获取时遇到的挫折。如果这有助于任何人
pd.set\u选项('display.max\u colwidth',None)
对于较新版本,这是最好的答案