python - 按连续值平均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 实现这一目标的最佳方法是什么?
解决方案
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
推荐阅读
- android - 获取与活动相关的错误未在片段中运行
- python - 我想将数据框的值替换为python中的列名。我该怎么做?
- ios - AdMob - 在 isReady 属性更改时获取通知
- javascript - 可以从 url 中省略 ID[] 吗?
- c++ - 从两个不同的类继承的非虚拟基类的访问成员
- jira - Jira - 避免收到有关更改/评论任务的邮件我是受让人
- python-2.7 - Python2 - proc.stdin 未将密码正确传递给 easyrsa
- python - 如何删除包含 alpha 值或整个 dbf 列的 dbf 行
- mysql - 需要链中承诺的数据
- javascript - 如何使用 javascript 禁用选项?