我有一个数据帧df
id | 值 | 类别 |
---|---|---|
AB | 2 | 小|
BC | 3 | 大 |
AB | 4 | 小 |
AB | 5 | 大 |
BC | 6 | 小 |
BC | 2 | 小 |
BC | 4 | 大 |
AB | 8 | 大 |
您可以使用Pivot。因此,您可以定义将哪列的值转换为单独的列columns=[类别']。以及应使用哪一列来填充相应的结果values='value',基于您想要的聚合函数:aggfunc=np.mean
table = pd.pivot_table(df, values='value', index=['id'],
columns=['category'], aggfunc=np.mean)
您可以尝试以下操作吗:
df.groupby(['id', 'category']).mean().unstack(fill_value=0)
尝试.pivot_table
:
x = df.pivot_table(
index="id", columns="category", values="value", aggfunc="mean"
).reset_index()
x.columns.name = None
print(x)
打印:
id big small
0 AB 6.5 3.0
1 BC 3.5 4.0