pandas数据帧和多行值

时间:2018-06-01 13:02:56

标签: python pandas dataframe

美好的一天,

在shell中使用pandas DataFrame时是否可以获得多行单元输出?我知道整行的高度超过1个字符,但那是我真正想要的。

示例:

data = [
       {'id': 1, 't': 'very long text\ntext line 2\ntext line 3'},
       {'id': 2, 't': 'short text'}
       ]
df = pd.DataFrame(data)
df.set_index('id', inplace=True)
print(df)

并想获得输出:

id                  t
1      very long text
       text line 2
       text line 3
2      short text

而不是

id                                         t
1     very long text\ntextline 2\ntext line3
2                                 short text

3 个答案:

答案 0 :(得分:2)

您将使用以下脚本

获得预期结果
df.t.str.split("\n", expand=True).stack()

答案 1 :(得分:1)

您可以在Series

之后使用str.split取消字符串
df.set_index('id').t.str.split(r'\n').apply(pd.Series).stack().reset_index(level=1,drop=True).to_frame('t')
Out[177]: 
                 t
id                
1   very long text
1      text line 2
1      text line 3
2       short text

答案 2 :(得分:0)

在@unsorted here Pretty printing newlines inside a string in a Pandas DataFrame

中查看此答案

这里是你的例子:

import pandas as pd
from IPython.display import display, HTML

def pretty_print(df):
    return display(HTML(df.to_html().replace("\\n","<br>")))

data = [
       {'id': 1, 't': 'very long text\ntext line 2\ntext line 3'},
       {'id': 2, 't': 'short text'}
       ]
df = pd.DataFrame(data)
df.set_index('id', inplace=True)

pretty_print(df)

         t
id  
1   very long text
    text line 2
    text line 3
2   short text