首页 > 解决方案 > 按连续值平均python pandas

问题描述

我有一个包含多行的数据框,如下所示:

  wave      cross cross2
0 299.0   1.25    3.30
1 299.5   1.30    4.20
2 300.0   1.45    4.36
3 300.5   1.65    4.32
4 300.8   1.56    4.56

我想要做的是对相同波长的数据进行平均,以便得到一个带有 wave 作为整数的数据帧,结果如下:

  wave   cross cross2
0 299    1.30  3.75
1 300    1.55  4.41

使用 python pandas 实现这一目标的最佳方法是什么?

标签: pythonpandasmean

解决方案


groupby与 aggregate 一起使用mean,但首先将wave列转换为int

df = df.assign(wave = df['wave'].astype(int)).groupby('wave').mean()

或者:

df['wave'] = df['wave'].astype(int)
df = df.groupby('wave').mean()

或者:

df = df[df.columns.difference(['wave'])].groupby(df['wave'].astype(int)).mean()

print (df)
         cross    cross2
wave                    
299   1.275000  3.750000
300   1.553333  4.413333

推荐阅读