首页 > 解决方案 > 当用户购买了某个类别时,寻找其他类别的销售?

问题描述

我有以下格式的数据。这是不同类别的 user_id 级别的销售日期。

id  cat_1   cat_2   cat_3
1     1      10      100
2     2      0        0
3     0      20       0
5     3      0        0
6     4      0        0
9     5      0        0
10    0     30       200
11    6     0        300
12    7     0         0
13    8     40      400

我想要数据,比如当用户购买了某个类别时,其他类别的销售额是多少。例如。当 cat_1 不等于 0 时,cat_2 和 cat_3 的销售额是多少。

      cat_1  cat_2  cat_3
cat_1   36   50     800
cat_2   9   100     700
cat_3   15  80      1000

它可以在 excel 中完成,但通过 pandas 寻找方法。

标签: pythonpandas

解决方案


使用字典理解和过滤行的总和 byboolean indexingSeries.eq( >),通过 连接在一起concat并重塑Series.unstack

#if id is not index
df = df.set_index('id')
df = pd.concat({x:df[df[x].gt(0)].sum() for x in df.columns}).unstack()
#alternative
#df = pd.concat({x:df[df[x].gt(0)].sum() for x in df.columns}, axis=1).T

print (df)
       cat_1  cat_2  cat_3
cat_1     36     50    800
cat_2      9    100    700
cat_3     15     80   1000

推荐阅读