python - 在向前填充(填充)值时重新采样 Pandas 数据帧
问题描述
我有一个数据框,其中一个片段看起来像这样
Time Temperature
19 2019-01-01 11:48:51 23.798
20 2019-01-01 11:48:53 23.832
21 2019-01-01 11:48:54 NaN
22 2019-01-01 11:48:55 23.817
23 2019-01-01 11:48:56 NaN
我想将其重新采样为“2S”,同时确保最后一个测量值将替换任何 NaN。
df.resample('2S', on='Time').mean().ffill()
结果的片段如下所示
Temperature
Time
2019-01-01 11:48:52 23.832
2019-01-01 11:48:54 23.817
2019-01-01 11:48:56 23.809
注意时间戳 t=54s 处的值。我想要的是 t=53s 的温度 23.832,因为这是该时间戳的最后记录值。相反,它填充 t=55s 的值
编辑1: 回复后,我尝试了以下方法:
df.ffill().resample('2S', on='Time').first()
但这给出了以下结果,其中新的 t=52s 等于旧的 t=t=53s,这不是我所追求的行为......
Temperature
Time
2019-01-01 11:48:50 23.798
2019-01-01 11:48:52 23.832
2019-01-01 11:48:54 23.832
2019-01-01 11:48:56 23.817
编辑2: 为了更容易理解,这是我想要的输出。我不在乎它是在奇数秒还是偶数秒采样。
Temperature
Time
2019-01-01 11:48:52 23.798
2019-01-01 11:48:54 23.832
2019-01-01 11:48:56 23.817
解决方案
编辑#3:
idx = df.resample('2S').asfreq().index
df.reindex(df.index.union(idx)).ffill().resample('2S').asfreq()
输出:
Temperature
Time
2019-01-01 11:48:50 NaN
2019-01-01 11:48:52 23.798
2019-01-01 11:48:54 23.832
2019-01-01 11:48:56 23.817
编辑#2:
idx = df.resample('2S').asfreq().index
df.reindex(df.index.union(idx)).bfill().resample('2S').first()
输出:
Temperature
Time
2019-01-01 11:48:50 23.798
2019-01-01 11:48:52 23.832
2019-01-01 11:48:54 23.817
2019-01-01 11:48:56 NaN
编辑:
df.reindex(df.index.union(df.resample('2S').asfreq().index))\
.interpolate().resample('2S').asfreq()
输出:
Temperature
Time
2019-01-01 11:48:50 NaN
2019-01-01 11:48:52 23.8150
2019-01-01 11:48:54 23.8245
2019-01-01 11:48:56 23.8170
你想在奇数秒还是偶数秒重新采样两秒?
df.ffill().resample('2S', on='Time', base=1).mean()
输出:
Temperature
Time
2019-01-01 11:48:51 23.798
2019-01-01 11:48:53 23.832
2019-01-01 11:48:55 23.817
或者只是偶数秒:
df.ffill().resample('2S', on='Time').mean()
输出:
Temperature
Time
2019-01-01 11:48:50 23.7980
2019-01-01 11:48:52 23.8320
2019-01-01 11:48:54 23.8245
2019-01-01 11:48:56 23.8170
推荐阅读
- delphi - 是否可以在 Delphi 中为 Windows 应用商店创建 MS Office 插件?
- python-3.x - 实现 for 和 if 在 reduce 函数中
- css - 如何根据其值单独设置 ngFor 的每个元素的样式?
- android - 我正在尝试从数组列表中的房间数据库中获取数据,但它仅显示 android 中的最后一条记录
- ruby-on-rails - 无法从我的 Windows 桌面访问在 AWS Ubuntu 上运行的 rails localhost
- arrays - 用汇编语言 x86 从大到小对数组进行排序
- amazon-iam - 使用 nodejs aws sdk 连接到 aws 弹性搜索
- sql - 如何从jsonb int数组制作sql表列
- angular - 每次将新对象推入数组时,模板中的循环都会重复。我怎样才能在模板中处理这个?
- c# - 在 Tableview 中排序