python - 重新格式化 Pandas 数据框,将 1 列的值作为列,将其他列作为行

标签 python pandas

我有一个 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)

enter image description here

关于python - 重新格式化 Pandas 数据框,将 1 列的值作为列,将其他列作为行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38359124/

相关文章:

Python OOP - 方法返回 None

python - 使用 max() 函数的数据框列值

python - 从列中提取数据

python - Pandas 使用日期作为索引加入/合并 2 个数据帧

python - 将 float 转换为一定精度,然后复制为字符串

Python 2.6.4 属性装饰器不工作

python - 如何动态更新Python循环中参数的值?

python - 将列表转换为 Pandas 数据框列

python - Pandas :从列 A 中提取 B 列不存在的数据

python - 如何从 Python 代码生成 PDF 报告。奥杜 16