pandas 如何根据多列的具体值将行值转换为列?[duplicate]

kx5bkwkv  于 2023-03-11  发布在  其他
关注(0)|答案(1)|浏览(129)

此问题在此处已有答案

How can I pivot a dataframe?(5个答案)
昨天关门了。
这是一个更大数据的例子。
我有这样一个 Dataframe :

df = pd.DataFrame({"Year":[2023, 2023, 2023, 2024, 2024, 2024],
                   "Value":[0, 2, 3, 1, 5, 2],
                   "Field":["A", "A", "B", "A", "B", "B"],
                   "ID":["X", "X", "X", "X", "Z", "Y"],
                   "Type":["class1","class2","class1","class1","class1","class2"]})

df
Out[8]: 
   Year  Value Field ID    Type
0  2023      0     A  X  class1
1  2023      2     A  X  class2
2  2023      3     B  X  class1
3  2024      1     A  X  class1
4  2024      5     B  Z  class1
5  2024      2     B  Y  class2

我想基于df[“Type”]值创建新列,并基于Field和ID列中的相同数据从df[“Value”]列中获取值。因此,我的输出应该如下所示:

Year Field ID  class1  class2
0  2023     A  X     0.0     2.0
1  2023     B  X     3.0     NaN
2  2024     A  X     1.0     NaN
3  2024     B  Z     5.0     NaN
4  2024     B  Y     NaN     2.0

有人能帮我吗?

66bbxpm5

66bbxpm51#

应用df.pivot

res = df.pivot(columns='Type', values='Value', index=['Year', 'Field', 'ID']).reset_index()
Type  Year Field ID  class1  class2
0     2023     A  X     0.0     2.0
1     2023     B  X     3.0     NaN
2     2024     A  X     1.0     NaN
3     2024     B  Y     NaN     2.0
4     2024     B  Z     5.0     NaN

相关问题