【发布时间】:2021-11-02 17:18:53
【问题描述】:
我正在使用一个数据框,我需要在其中创建一个按“ColA”分组的列(“Newcol”),然后对于每一行 - 相对于日期列(“ColB”)...。请参阅如果在该日期值之前 2 或 3 天前存在特定字符串。示例如下:
原始 DF:
ColA ColB ColC
B 2021-10-24 dog
B 2021-10-25 cat
B 2021-10-26 bird
B 2021-10-27 dog
B 2021-10-28 bird
H 2021-10-24 cat
H 2021-10-25 dog
H 2021-10-26 dog
H 2021-10-27 bird
H 2021-10-28 cat
X 2021-10-24 bird
X 2021-10-25 dog
X 2021-10-26 dog
X 2021-10-27 dog
X 2021-10-28 bird
所以,假设要标记的字符串是“狗”。按 ColA 分组,我需要“NewCol”才能使用 ColB 日期列,回顾 2-3 天,看看 ColC 是否说“狗”……如果确实如此,则标记它。所以“NewCol”中的值是二进制的:0 表示否,1 表示是。见下例:
所需的 DF:
ColA ColB ColC NewCol
B 2021-10-24 dog NA
B 2021-10-25 cat NA
B 2021-10-26 bird 1
B 2021-10-27 dog 1
B 2021-10-28 bird 0
H 2021-10-24 cat NA
H 2021-10-25 dog NA
H 2021-10-26 dog 0
H 2021-10-27 bird 1
H 2021-10-28 cat 1
X 2021-10-24 bird NA
X 2021-10-25 dog NA
X 2021-10-26 dog 0
X 2021-10-27 dog 1
X 2021-10-28 bird 1
感谢任何建议。谢谢。
【问题讨论】:
-
为什么
B的最后一行是0? -
@QuangHoang B 的最后一行是日期 = 2021-10-28,因此将查看(2021-10-25 和 2021-10-26)前 2-3 天的 ColC 值colC - 分别是 'cat' 和 'bird' ...在 NewCol 中应该产生 0
-
啊,我明白了。那么我认为我的解决方案不能回答你的问题。它调查了最后 3 天。