【发布时间】:2019-05-07 15:04:27
【问题描述】:
我有一个如下所示的数据框。我想用“3S”做采样
所以有些情况下存在 NaN。我所期望的是数据框应该使用“3S”进行采样,并且如果在两者之间发现任何“NaN”,则停在那里并从该索引开始采样。我尝试使用dataframe.apply 方法来实现,但它看起来很复杂。有什么捷径可以实现吗?
df.sample(n=3)
生成输入的代码:
index = pd.date_range('1/1/2000', periods=13, freq='T')
series = pd.DataFrame(range(13), index=index)
print series
series.iloc[4] = 'NaN'
series.iloc[10] = 'NaN'
我尝试进行采样,但之后不知道如何进行。
2015-01-01 00:00:00 0.0
2015-01-01 01:00:00 1.0
2015-01-01 02:00:00 2.0
2015-01-01 03:00:00 2.0
2015-01-01 04:00:00 NaN
2015-01-01 05:00:00 3.0
2015-01-01 06:00:00 4.0
2015-01-01 07:00:00 4.0
2015-01-01 08:00:00 4.0
2015-01-01 09:00:00 NaN
2015-01-01 10:00:00 3.0
2015-01-01 11:00:00 4.0
2015-01-01 12:00:00 4.0
新的数据框应基于“3S”进行采样,如果存在“NaN”,则应考虑,并从找到“NaN”记录的位置开始采样。
预期输出:
2015-01-01 02:00:00 2.0 -- Sampling after 3S
2015-01-01 03:00:00 2.0 -- Print because NaN has found in Next
2015-01-01 04:00:00 NaN -- print NaN record
2015-01-01 07:00:00 4.0 -- Sampling after 3S
2015-01-01 08:00:00 4.0 -- Print because NaN has found in Next
2015-01-01 09:00:00 NaN -- print NaN record
2015-01-01 12:00:00 4.0 -- Sampling after 3S
【问题讨论】:
-
所以你想在看到 NaN 的地方重置为 0 并从那里重新采样直到下一个值?
-
你能告诉我们你希望你的目标df是什么样子吗?
-
阿西莫,你说得对,我想归零
-
您的 Expected df 是否有错字?为什么 df 显示 6 am entry after 9 am entry?
-
是的。有错别字..我会编辑