我有一个像这样的数据框:
df = pd.DataFrame()
df['id'] = [1,1,1,2,2,3,3,3,3,4,4,5]
df['view'] = ['A', 'B', 'A', 'A','B', 'A', 'B', 'A', 'A','B', 'A', 'B']
df['value'] = np.random.random(12)
id view value
0 1 A 0.625781
1 1 B 0.330084
2 1 A 0.024532
3 2 A 0.154651
4 2 B 0.196960
5 3 A 0.393941
6 3 B 0.607217
7 3 A 0.422823
8 3 A 0.994323
9 4 B 0.366650
10 4 A 0.649585
11 5 B 0.513923
我现在想总结一下每个id
each view
通过“价值”。
将此视为某些 id 重复观察的视图,我想对其进行总结。例如,id 1 对 A 有两个观测值。
I tried
res = df.groupby(['id', 'view'])['value'].mean()
这实际上几乎是我想要的,但是 pandas 结合了id
and view
列成一列,这是我不想要的。
id view
1 A 0.325157
B 0.330084
2 A 0.154651
B 0.196960
3 A 0.603696
B 0.607217
4 A 0.649585
B 0.366650
5 B 0.513923
res.shape 的尺寸也是 (9,)
我想要的输出是这样的:
id view value
1 A 0.325157
1 B 0.330084
2 A 0.154651
2 B 0.196960
3 A 0.603696
3 B 0.607217
4 A 0.649585
4 B 0.366650
5 B 0.513923
保留列名和维度以及重复 id 的位置。每个 id 对于 A 和 B 只能有 1 行。
我怎样才能实现这个目标?