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