如何解决如何在聚合的熊猫数据框上运行多个功能
我有一个盐湖城一个月来的风速和风向数据。我想按小时数据分组。对于该小时内获取的数据,我想完成两件事:(1)计算平均风速(2)将我定义的函数(“ yamatrino”)应用于每个小时内进行的所有风向测量。
time Station_ID wind_speed wind_direction
0 2019-08-01 00:00:00 UTC WBB 3.48 96.1
1 2019-08-01 00:00:00 UTC UT215 6.54 141.4
2 2019-08-01 00:00:00 UTC MTMET 3.39 67.75
3 2019-08-01 00:00:00 UTC NAA 5.99 154.9
4 2019-08-01 00:00:00 UTC QHW 1.52 107
下面是我编写的代码(1)将时间数据转换为日期时间格式,(2)创建两列,每个数据小时的平均风速和yamatrino值。
df['time'] = pd.to_datetime(df['time'],format ='%Y-%m-%d %H:%M:%S UTC')
df.groupby(df['time'].dt.hour)['wind_direction','wind_speed'].agg([('yamatrino_value',lambda wind_direction: yamatrino(wind_direction)),('hourly_velocity_mean',np.mean('wind_speed'))])
错误显示为“ TYPE ERROR:无法执行灵活类型的归约” 我很困惑如何将多个列的数据进行汇总。
解决方法
请考虑在DataFrame.groupby.agg
调用中使用字典在单独的列上运行单独的聚合函数。而且,如果您的方法需要一个参数,则不需要lambda
。
df.groupby(df['time'].dt.hour).agg({'wind_direction': yamatrino,'wind_speed': np.mean})
从v0.25.0 +开始,您可以name aggregate columns来使用 yamatrino_value 和 hourly_velocity_mean 。但是,您需要使用具有以下字段的命名元组:['column','aggfunc']
。
df.groupby(df['time'].dt.hour).agg(yamatrino_value = ('wind_direction',yamatrino),hourly_velocity_mean = ('wind_speed',np.mean))
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。