python如何很好地对齐pandas数据帧中的长文本?

时间:2017-10-31 01:02:07

标签: python pandas alignment indentation

鉴于熊猫的数据框(从数据库收到),我试图将结果输出到控制台,因为它将完整可读

我面临的挑战是关于2列中的长文本:LPQ_REASON& LPQ_RESOLUTION。您将从下面的输出(print df)中注意到两个LPQ列以3个点(...)结束,因此我无法读取文本。尽管我的初始设置为:

pd.set_option('display.max_rows', 1500)
pd.set_option('display.max_columns', 1500)
pd.set_option('display.width', 1000)

所以控制台上的结果如下所示:

       ID     DIS_CASE_ID                        CREATION_DATE  type_2                                  LPQ_REASON                                     LPQ_RESOLUTION   RESOLUTION_CODE
       0           727990         61180481 2017-01-05 13:47:05    7891  The LPQ we know is shorto add is 25% (h...  This Memo was issued with conjunction to our j...              3979
       1           727889         61180482 2017-01-05 13:51:09    7891  The LPQ he collide will increase 15% (h...  This Memo was issued on matching viloation for...              3979

我正在寻找的最佳解决方案(如果可行)是打印整行,以便:

           ID      DIS_CASE_ID                  CREATION_DATE  type_2                                  LPQ_REASON                                     LPQ_RESOLUTION     RESOLUTION_CODE
            0           727990   61180481 2017-01-05 13:47:05    7891   The LPQ we know is shorto add is 25% (here       This Memo was issued with conjunction to our               3979
                                                                        comes the rest of the sentence. it might be      analysis to foster a better bs when writing
                                                                        long, or not, it might be short or whatever)  

            1           727889   61180482 2017-01-05 13:51:09    7891  The LPQ he collide will increase 15% yes and  This Memo was issued on matching viloation for                 3979
                                                                       here I'm going to write the entire sentence    who cares on what violation. just issued. 
                                                                       as if I really remember what was written. ha

1 个答案:

答案 0 :(得分:0)

不是您想要的最佳效果,但您可以尝试以下方法:

pd.set_option('display.max_colwidth',100)

其中100是您可以选择的列宽。但这不会创建一个多行单元格,而是一个非常长的列。

或:

不是很优雅,但是 您可以尝试使用'制表'库(https://pypi.python.org/pypi/tabulate)创建了很好的文本表,如:

+--------+-------+
| item | qty |
+========+=======+
| spam | 42 |
+--------+-------+
| eggs | 451 |
+--------+-------+
| bacon | 0 |
+--------+-------+

使用表格,您可以使用' \ n'换行符。 只是迭代你的文本单元格并放置一个' \ n'每X个字符(假设每50个字符)。

一个简单的代码:

for i in range(len(data)): 
    data.at[i,'text'] = data.at[i,'text'][0:50] + '\n' + data.at[i,'text'][50:]

以上仅限于一个换行符,但您可以对其进行改进,以便为长文本进行多次换行。并且也没有考虑它是否在一个单词的中间断开。

!确保在数据副本上执行此操作,因为它会更改您的数据。如果您尝试使用常规'打印'然后你会看到' \ n'卡在文本的中间!