【发布时间】:2018-09-04 13:54:00
【问题描述】:
我想在 MultiIndex 数据帧上进行分组,计算 df 中每个 user2 的每一列的出现次数:
>>> df
user1 user2 count
0 1 2
a x d a
0 2 6 0 1 0 0
1 4 6 0 0 0 3
2 21 76 2 0 1 0
3 5 18 0 0 0 0
注意user1 和user2 与count 处于同一级别(合并的副作用)。
期望的输出:
user2 count
0 1 2
a x d a
0 6 0 1 0 1
1 76 1 0 0 0
3 18 0 0 0 0
我试过了
>>> df.groupby(['user2','count'])
但我明白了
ValueError: Grouper for 'count' not 1-dimensional
生成器代码:
df = pd.DataFrame({'user1':[2,4,21,21],'user2':[6,6,76,76],'param1':[0,2,0,1],'param2':['x','a','a','d'],'count':[1,3,2,1]}, columns=['user1','user2','param1','param2','count'])
df = df.set_index(['user1','user2','param1','param2'])
df = df.unstack([2,3]).sort_index(axis=1).reset_index()
df2 = pd.DataFrame({'user1':[2,5,21],'user2':[6,18,76]})
df2.columns = pd.MultiIndex.from_product([df2.columns, [''],['']])
final_df = df2.merge(df, on=['user1','user2'], how='outer').fillna(0)
【问题讨论】:
-
为什么你的数据是这样的?我的意思是计算有水平
-
@Yuca 它是将数据框与 MultiIndex 列和常规数据框合并的产物
标签: pandas