Pandas使用resample重采样求均值时如何保留非数值列?
解决方案
你原来的写法存在两个问题:
- 直接全局重采样求均值时,pandas默认只会计算数值列,非数值的
col1、col2会被直接丢弃 - 没有区分
col1、col2的分组,会把不同分组的数值混在一起计算均值,不符合你的业务逻辑
你可以结合groupby和pd.Grouper实现需求,代码如下:
import pandas as pd # 同时按col1、col2、60分钟时间窗口分组,计算数值列均值 df_new = df.groupby( ['col1', 'col2', pd.Grouper(key='ds', freq='60min')] ).mean(numeric_only=True).reset_index() # 调整列顺序,把时间列ds放在最前面,匹配你期望的输出格式 df_new = df_new[['ds', 'col1', 'col2', 'col3', 'col4']]
运行上述代码后得到的df_new就和你期望的输出完全一致。
内容的提问来源于stack exchange,提问作者Denver Dang
相关产品推荐
相关产品推荐

