假设我有以下数据:
import pandas as pd
csv = [
['2019-05-01 00:00', ],
['2019-05-01 01:00', 2],
['2019-05-01 02:00', 4],
['2019-05-01 03:00', ],
['2019-05-01 04:00', 2],
['2019-05-01 05:00', 4],
['2019-05-01 06:00', 6],
['2019-05-01 07:00', ],
['2019-05-01 08:00', ],
['2019-05-01 09:00', 2]]
df = pd.DataFrame(csv, columns=["DateTime", "Value"])
因此,我正在处理一个数据有缺口的时间序列:
DateTime Value
0 2019-05-01 00:00 NaN
1 2019-05-01 01:00 2.0
2 2019-05-01 02:00 4.0
3 2019-05-01 03:00 NaN
4 2019-05-01 04:00 2.0
5 2019-05-01 05:00 4.0
6 2019-05-01 06:00 6.0
7 2019-05-01 07:00 NaN
8 2019-05-01 08:00 NaN
9 2019-05-01 09:00 2.0
现在,我想一个接一个地处理现有数据块。我的意思是,我想把这个系列分成两部分。目标是迭代这些块,这样我就可以将每个块分别传递给另一个无法处理数据间隙的函数。然后,我想将结果存储在原始数据帧中相应的位置。举个简单的例子,假设函数计算块的平均值。预期结果:
DateTime Value ChunkAverage
0 2019-05-01 00:00 NaN NaN
1 2019-05-01 01:00 2.0 3.0
2 2019-05-01 02:00 4.0 3.0
3 2019-05-01 03:00 NaN NaN
4 2019-05-01 04:00 2.0 4.0
5 2019-05-01 05:00 4.0 4.0
6 2019-05-01 06:00 6.0 4.0
7 2019-05-01 07:00 NaN NaN
8 2019-05-01 08:00 NaN NaN
9 2019-05-01 09:00 2.0 2.0
我知道这可以通过迭代循环、“if”子句、带索引的切片等“传统方式”实现。但我猜熊猫内置了更高效、更安全的功能。但我不知道怎么做
一种可能是基于
Value
中的NaN添加分隔列,并按以下方式分组:这将统计每个组中的值:
如何填充
NaN
取决于您希望通过计算实现什么您可以使用^{} ,也可以使用^{} 和^{}
注:
df.assign(...)
给出了新的数据帧李>df['chunk'] = ...
在适当的位置对原始数据帧进行变异相关问题 更多 >
编程相关推荐