在pandas数据帧中完全打印非常长的字符串

Yan*_*uru 91 python string options pandas

我正在努力寻找看似非常简单的事情.我有一个包含很长字符串的pandas数据框.

df = pd.DataFrame({'one' : ['one', 'two', 
      'This is very long string very long string very long string veryvery long string']})
Run Code Online (Sandbox Code Playgroud)

现在,当我尝试打印相同的内容时,我看不到完整的字符串,而是只看到字符串的一部分.

我尝试了以下选项

  • 运用 print(df.iloc[2])
  • 运用 to_html
  • 运用 to_string
  • 其中一个stackoverflow答案建议通过使用pandas显示选项来增加列宽,这也不起作用.
  • 我也没有得到如何set_printoptions帮助我.

任何想法都赞赏.看起来很简单,但无法得到它!

jor*_*ris 138

您可以使用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
Run Code Online (Sandbox Code Playgroud)

事实上,如果您只想检查一个值,通过访问它(作为标量,而不是行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'
Run Code Online (Sandbox Code Playgroud)

  • df.iloc [2,0] - 不起作用 - 我将打印第一排和第三排并切割( (2认同)
  • @Wouter 如果您有不同的问题,最好提出一个新问题,而不是在这里发表评论 (2认同)
  • 这不适用于更大的字符串,例如多行的段落。 (2认同)

omn*_*sia 22

使用pd.set_option('display.max_colwidth', -1)自动换行,多行细胞。

是有关如何充分利用大熊猫的jupyters显示器的重要资源。

  • 对于较新版本,`pd.set_option('display.max_colwidth', None)` (16认同)

Roc*_*etq 14

另一种非常简单的方法是调用列表函数:

list(df['one'][2])
# output:
['This is very long string very long string very long string veryvery long string']
Run Code Online (Sandbox Code Playgroud)

没有什么值得一提的,修改列出整个列是不好的,但对于一个简单的行 - 为什么不呢


big*_*nty 7

打印整个字符串的另一种简便方法是values在数据框上调用。

df = pd.DataFrame({'one' : ['one', 'two', 
      'This is very long string very long string very long string veryvery long string']})

print(df.values)
Run Code Online (Sandbox Code Playgroud)

输出将是

[['one']
 ['two']
 ['This is very long string very long string very long string veryvery long string']]
Run Code Online (Sandbox Code Playgroud)


小智 7

我创建了一个小的实用函数,这对我来说很有效

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)
Run Code Online (Sandbox Code Playgroud)

我可以根据我的要求更改宽度的长度,而无需永久设置任何选项。


kHa*_*hit 6

如果您使用的是 jupyter 笔记本,您还可以将 pandas 数据帧打印为 HTML 表,这将打印完整的字符串。

from IPython.display import display, HTML
display(HTML(df.to_html()))
Run Code Online (Sandbox Code Playgroud)

输出

    one
0   one
1   two
2   This is very long string very long string very long string veryvery long string
Run Code Online (Sandbox Code Playgroud)


Ami*_*raj 5

只需在打印之前将以下行添加到您的代码中。

 pd.options.display.max_colwidth = 90  # set a value as your need
Run Code Online (Sandbox Code Playgroud)

您可以简单地执行以下步骤来设置其他附加选项,

  • 您可以按如下方式更改 pandas max_columns 功能的选项以显示更多列

    import pandas as pd
    pd.options.display.max_columns = 10
    
    Run Code Online (Sandbox Code Playgroud)

    (这允许显示 10 列,您可以根据需要进行更改)

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

    pd.options.display.max_rows = 999
    
    Run Code Online (Sandbox Code Playgroud)

    (这允许一次打印 999 行)

这应该可以正常工作

请参阅文档以更改熊猫的更多选项/设置