python - 如何创建新的缺失行并插入值?
问题描述
我有以下数据框:
utc_timestamp feed data
2015-10-13 11:00:00+00:00 A 1
2015-10-13 12:00:00+00:00 A 5
2015-10-13 13:00:00+00:00 B 6
2015-10-13 16:00:00+00:00 A 10
2015-10-13 17:00:00+00:00 A 11
2015-10-13 15:00:00+00:00 B 11
当时间戳除以超过 1 小时的间隔时,我需要按分组feed
、排序和识别案例。utc_timestamp
例如,让我们看一下feed
等于时的行A
。两者之间2015-10-13 12:00:00+00:00
有2015-10-13 16:00:00+00:00
4个小时的差距。
utc_timestamp feed data
2015-10-13 11:00:00+00:00 A 1
2015-10-13 12:00:00+00:00 A 5
2015-10-13 16:00:00+00:00 A 10
2015-10-13 17:00:00+00:00 A 11
我需要插入丢失的时间来得到这样的东西:
utc_timestamp feed data
2015-10-13 11:00:00+00:00 A 1
2015-10-13 12:00:00+00:00 A 5
2015-10-13 13:00:00+00:00 A 6
2015-10-13 14:00:00+00:00 A 7
2015-10-13 15:00:00+00:00 A 8
2015-10-13 16:00:00+00:00 A 10
2015-10-13 17:00:00+00:00 A 11
插值方法不是那么重要。它可以是线性插值,也可以只是用相等的数字填充间隙。例如,如果data
间隔是 (10 - 5 => 5) 并且间隔是 4 小时,那么每个新行的值只能是5/4
.
有什么方法可以自动执行此任务吗?
解决方案
对我来说,首先添加不存在的行Resampler.asfreq
,然后在 lambda 函数中对每个组进行插值:
df['utc_timestamp'] = pd.to_datetime(df['utc_timestamp'])
df = (df.set_index('utc_timestamp')
.groupby('feed')['data']
.resample('H')
.asfreq()
.groupby(level=0)
.apply(lambda x: x.interpolate())
.reset_index())
print (df)
feed utc_timestamp data
0 A 2015-10-13 11:00:00+00:00 1.00
1 A 2015-10-13 12:00:00+00:00 5.00
2 A 2015-10-13 13:00:00+00:00 6.25
3 A 2015-10-13 14:00:00+00:00 7.50
4 A 2015-10-13 15:00:00+00:00 8.75
5 A 2015-10-13 16:00:00+00:00 10.00
6 A 2015-10-13 17:00:00+00:00 11.00
7 B 2015-10-13 13:00:00+00:00 6.00
8 B 2015-10-13 14:00:00+00:00 8.50
9 B 2015-10-13 15:00:00+00:00 11.00
使用 lambda 函数的另一种解决方案:
df = (df.set_index('utc_timestamp')
.groupby('feed')['data']
.apply(lambda x: x.resample('H').asfreq().interpolate())
.reset_index())
推荐阅读
- c# - 如何将 audioclip 数组中的音频声音分配给 Gameobject 数组
- javascript - React:如何使选定的选项不显示在 Material UI 自动完成的输入字段中
- java - logback 无法登录调试
- python - Plotly:如何在 plotly express 折线图中更改图例的变量/标签名称?
- java - 在 Kotlin 中为 Android 开发时应该使用哪些 api 文档?
- linux - 使内核 5.9 错误失败:从 vmlinux 加载 BTF
- python - 使用 BeautifulSoup 从 UPS 网站提取表格
- python - 基于替换和不替换规则的子字符串替换
- javascript - 服务器端渲染构建错误期间 Gatsby 窗口不可用
- oracle - 同一张表oracle的嵌套查询