首页 > 解决方案 > 如何在 Pandas 中执行依赖值的数据透视表/Groupby?

问题描述

我有以下数据框:

      Tran ID    Category    Quantity 
   0   001          A           5
   1   001          B           2 
   2   001          C           3
   3   002          A           4
   4   002          C           2
   5   003          D           6 

我想把它变成:

      Tran ID       A      B      C      D       Quantity 
   0   001        True    True   True   False       10
   1   002        True    False  True   False        6
   2   003        False   False  False  True         6 

我知道我可以groupby用来获得数量的总和,但我不知道如何执行我描述的枢轴。

标签: pythonpandaspandas-groupby

解决方案


用于带有聚合get_dummies的指标max并添加带有聚合的新列sum

#pandas 0.23+
df1 = pd.get_dummies(df.set_index('Tran ID')['Category'], dtype=bool).max(level=0)
#oldier pandas versions
#df1 = pd.get_dummies(df.set_index('Tran ID')['Category']).astype(bool).max(level=0)
s = df.groupby('Tran ID')['Quantity'].sum()

df2 = df1.assign(Quantity = s).reset_index()
print (df2)
  Tran ID      A      B      C      D  Quantity
0     001   True   True   True  False        10
1     002   True  False   True  False         6
2     003  False  False  False   True         6

推荐阅读