【发布时间】:2018-09-25 01:43:34
【问题描述】:
我有这个数据框:
In[1]df = pd.DataFrame([[1,2,3,4,5],[6,7,8,9,10],[11,12,13,14,15],[16,17,18,19,20],[21,22,23,24,25]])
In[2]df
Out[2]:
0 1 2 3 4
0 1 2 3 4 5
1 6 7 8 9 10
2 11 12 13 14 15
3 16 17 18 19 20
4 21 22 23 24 25
我需要做到这一点:
- 对于我的数据框中的每一行,
- 如果任意 3 个连续单元格中的 2 个或多个值大于 10,
- 那么这 3 个单元格中的最后一个应标记为 True。
根据上述标准,生成的数据框 df1 的大小应相同,其中 True 或 False:
In[3]df1
Out[3]:
0 1 2 3 4
0 NaN NaN False False False
1 NaN NaN False False False
2 NaN NaN True True True
3 NaN NaN True True True
4 NaN NaN True True True
- df1.iloc[0,1] 是 NaN,因为在该单元格中,只给出了两个数字,但至少需要 3 个数字才能进行测试。
- df1.iloc[1,3] 为 False,因为 [7,8,9] 中没有一个大于 10
- df1.iloc[3,4] 为 True,因为 [18,19,20] 中的 2 或更多大于 10
我认为带有函数的 dataframe.rolling.apply() 可能是解决方案,但究竟如何?
【问题讨论】:
-
你的问题是什么?
-
@penguin2048 我编辑了帖子,我的问题是如何在帖子中实现1 2 3 4。
-
欢迎来到 StackOverflow。请花时间阅读how to provide a great pandas example 上的这篇文章以及如何提供minimal, complete, and verifiable example 并相应地修改您的问题。 how to ask a good question 上的这些提示也可能有用。
-
请发布预期输出
-
@VivekKalyanarangan 我重新表述了这个问题。
标签: python pandas rolling-computation