如何在不更改特定列的情况下对数据框中的数据进行重新采样?

Posted

技术标签:

【中文标题】如何在不更改特定列的情况下对数据框中的数据进行重新采样?【英文标题】: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()

【问题讨论】:

【参考方案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)

以上是关于如何在不更改特定列的情况下对数据框中的数据进行重新采样?的主要内容,如果未能解决你的问题,请参考以下文章