python - 如何将 Pandas 中的行折叠为列?

标签 python pandas

我正在尝试折叠 pandas 中多行的数据框。

假设数据框看起来像这样

ID      Key  Value  Object
1001    K    1        4
1001    C    2        7
1001    D    3        9
2001    K    1        19
2001    C    2        10

现在我想将数据框折叠成以下内容:

ID   Value_K   Value_C   Value_D  Object_K  Object_C Object_D
1001   1         2         3         4         7        9
2001   1         2         NA        19        10       NA

有好心人能帮帮我吗?我已尝试使用 pivot()pivot_table()collapse()melt() 但没有取得任何成果。

最佳答案

您可以使用groupbyunstack

df = pd.DataFrame({'ID': [1001,1001,1001,2001,2001], 'Key': ['K', 'C', 'D', 'K', 'C'], 'Value': [1,2,3,1,2],
                  'Object': [4,7,9,19,10]})
df = df.groupby(['ID', 'Key']).sum().unstack()
df.columns = df.columns.map('{0[0]}-{0[1]}'.format)
df = df.reset_index()
print(df)

     ID  Value-C  Value-D  Value-K  Object-C  Object-D  Object-K
0  1001      2.0      3.0      1.0       7.0       9.0       4.0
1  2001      2.0      NaN      1.0      10.0       NaN      19.0

关于python - 如何将 Pandas 中的行折叠为列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55196725/

相关文章:

python - 如果可能的话,如何使用函数参数作为 npy 方法

python - 错误 : Double requirement given: Pillow==6. 1.0(来自 -r requirements.txt(第 25 行))

python - 与服务帐户电子邮件共享 Google 表格

python - df.reindex() 和 df.loc[] 的区别

python - 将函数应用于 pandas 中分组数据的单列

python - 为什么无法在列表理解中解包列表?

python - 在 pandas 中切片串联数据框

python - Pandas - 如果少于 N,则删除唯一行

python - 如何根据特定条件过滤重复行

python - 如何使用 1 个以上 GPU 训练 PyTorch 迁移学习教程