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

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)

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

我可以在不重新构建的情况下对 Maven 构建中的文件进行更改吗?

在不更改原始 RowState 的情况下对数据集中的数据表进行排序

如何在不单独指定所有列的情况下对所有列的 SQL 结果进行排序?

Movilizer:在不更改数组键的情况下对数据容器进行排序

如何在不使用 Spark SQL 的情况下对 Spark 中的数据帧进行排序?

如何在不使用 GROUP BY 或 PARTITION BY 的情况下对 Oracle SQL 中的数据进行分组