美好的一天,
在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
答案 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