我有一个 df
结构如下:
name date A B C
n1 07/01 a b c
n1 06/01 aa bb cc
n1 05/01 aaa bbb ccc
...
我需要构建数据框,使其看起来像:
name letters 05/01 06/01 07/01
n1 A aaa aa a
n1 B bbb bb b
n1 C ccc cc c
...
我可以使用 pandas
中的 melt()
将所有列拉入新行:
import pandas as pd
pd.melt(df, id_vars=["name"], var_name = "letters")
产生:
name letters value
n1 date 05/01
n1 date 06/01
n1 date 07/01
n1 A aaa
n1 A aa
n1 A a
n1 B bbb
n1 B bb
n1 B b
n1 C ccc
n1 C cc
n1 C c
...
现在我怎样才能按“日期”将其转换以获得我想要的结构?
我不确定如何在“字母”列的“日期”行上应用 df.pivot()
。有什么建议或替代步骤吗?
最佳答案
试试这个:
df1 = df.drop('name', 1).set_index('date').rename_axis('letters', 1).sort_index(1, ascending=1).T.reset_index()
df1.set_index(pd.Index(['n1'] * len(df1), name='name')).reset_index().rename_axis(None, 1)
关于python - 重新格式化 Pandas 数据框,将 1 列的值作为列,将其他列作为行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38359124/