pandas数据帧和多行值

dis*_*man 6 python dataframe pandas

美好的一天,

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

并希望获得输出:

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

Chr*_*ris 8

看看@unsorted 这里的答案在 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
Run Code Online (Sandbox Code Playgroud)


J. *_*Doe 7

你会得到你预期的结果

df.t.str.split("\n", expand=True).stack()
Run Code Online (Sandbox Code Playgroud)


WeN*_*Ben 2

Series您可以使用after取消字符串的嵌套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
Run Code Online (Sandbox Code Playgroud)