Python 当用户购买某个类别时,是否查找其他类别的销售?

Python 当用户购买某个类别时,是否查找其他类别的销售?,python,pandas,Python,Pandas,我有以下格式的数据。它是不同类别的用户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

我有以下格式的数据。它是不同类别的用户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查找方法。

使用字典理解和(
)将筛选行的总和连接在一起,并通过以下方式重塑:


@NitinKansal-当然,检查我的个人资料,为我的eamil运行代码并发送csv。所以我更改了我的解决方案。或者你的解决方案有效,而我的答案是否定的?我很困惑。
#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
arr = np.empty([df.shape[1], df.shape[1]])
for indexi,i in enumerate(df):
    for indexj,j in enumerate(df):
        arr[indexi][indexj] = sum(df[df[i]>0][j])