I have a data frame like this:
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
总结每个view
的'value'的平均值。可以将其视为某些id
对于view
具有重复观测,并希望对它们进行总结。例如,id 1 对A有两个观测值。我尝试过。
res = df.groupby(['id', 'view'])['value'].mean()
这实际上几乎是我想要的,但pandas将id
列和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行。
我该如何实现这一点?
mean
、sum
。但我认为性能是相同的。 - jezrael