【问题标题】:How to resample data in data frame without changing one specific column?如何在不更改特定列的情况下对数据框中的数据进行重新采样?
【发布时间】:2019-11-18 14:59:51
【问题描述】:

例如,我有几行想要重新采样到 1 秒的时间范围,但我需要保留列 ID。

time            id   acc   step
00:00:01.2      1    1.2    10
00:00:01.6      1    1.4    20
00:00:01.9      1    1.1    10

我当前的代码只是根据每一列重新采样,我需要帮助来保留“id”列。谢谢!

data = data.resample('1S').agg({'acc': np.mean, 'step': np.sum}).dropna()

【问题讨论】:

    标签: python pandas csv numpy


    【解决方案1】:

    我相信您也需要为 id 列添加聚合 - 例如Resampler.first:

    data = data.resample('1S').agg({'acc': np.mean, 'step': np.sum, 'id':'first'}).dropna()
    

    但如果需要通过id 重新采样进行分组:

    data = data.groupby('id').resample('1S').agg({'acc': np.mean, 'step': np.sum}).dropna()
    

    或者Grouper的解决方案:

    data=data.groupby(['id',pd.Grouper(freq='1s')]).agg({'acc': np.mean, 'step': np.sum}).dropna()
    

    【讨论】:

    • 完美!还有一个问题是:如何将“id”四舍五入为非小数,例如新的“id”列将显示“1.0”而不是“1”。谢谢!
    • @npm - 你可以试试 - data['step'] = data['step'].astype(int)
    猜你喜欢
    • 1970-01-01
    • 2022-01-13
    • 1970-01-01
    • 1970-01-01
    • 2020-11-12
    • 1970-01-01
    • 2020-08-05
    • 2013-08-10
    • 1970-01-01
    相关资源
    最近更新 更多