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功能的选项以显示更多列

    import pandas as pd
    pd.options.display.max_columns = 10
    
    (这允许显示10列,您可以根据需要进行更改)

  • 这样,您可以根据需要更改行数以显示更多行,如下所示

    pd.options.display.max_rows = 999
    
    (这允许一次打印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)
对于较新版本,这是最好的答案