您需要的是将值转换为2d数组,然后使用
np.mean:
f = lambda x: np.mean(np.array(x.tolist()), axis=0)df2 = df.groupby('C')['B'].apply(f).reset_index()print (df2) C B0 X [1.5, 2.5, 4.0, 5.0]1 Y [2.0, 3.0, 4.0, 4.0]2 Z [2.0, 3.0, 5.0, 6.0]
可能有最后一个解决方案,但效率较低(感谢@Abhik Sarkar进行测试):
df1 = pd.Dataframe(df.B.tolist()).groupby(df['C']).mean()df2 = pd.Dataframe({'B': df1.values.tolist(), 'C': df1.index})print (df2)B C0 [1.5, 2.5, 4.0, 5.0] X1 [2.0, 3.0, 4.0, 4.0] Y2 [2.0, 3.0, 5.0, 6.0] Z
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)