【发布时间】:2021-06-02 11:18:49
【问题描述】:
我有以下数据框:
p l w s_w v
1 1 1 1 2
1 1 2 1 2
1 1 3 0 5
1 1 4 1 5
1 1 5 1 5
2 1 1 1 1
2 1 2 0 2
2 1 3 0 3
2 1 4 0 4
2 1 5 1 5
2 1 6 1 4
我想要一个新专栏 如果 s_w 的值为 1,则在每一行中, 它的值是前两行中的 sum(v)(不一定是连续的),其中 s_w==1 和 sum(v) 用于随后的两行(不一定是连续的),同样是 s_w==1 所以 sum(v) + sum(v)。
我对中间的任何数量的零都不感兴趣
所以结果数据框看起来像这样:
p l w s_w v c_s
1 1 1 1 2 Null
1 1 2 1 2 Null
1 1 3 0 5 Null
1 1 4 1 5 10
1 1 5 1 5 13
2 1 1 1 1 19
2 1 2 0 2 Null
2 1 3 0 3 Null
2 1 4 0 4 Null
2 1 5 1 5 Null
2 1 6 1 4 Null
最后两行的值将为 Null,因为它们之后没有两个 1(n 换句话说,只有在前后行中有两个 1 时才前后求和(不一定连续,否则为 Null)
对原始问题的新编辑:
对于每组 P,l 如果只有检查列中的值为 1,则在 s_w 列和前两行的 sum(v) 中找到上述模式,其中 s_w==1 (不一定是连续的)并且也求和(v) 以下两行,其中 s_w==1(不一定连续)
p l w s_w check v
1 1 1 1 0 2
1 1 2 1 0 2
1 1 3 0 0 5
1 1 4 1 0 5
1 1 5 1 1 5
2 1 1 1 0 1
2 1 2 0 0 2
2 1 3 0 0 3
2 1 4 0 0 4
2 1 5 1 0 5
2 1 6 1 0 4
【问题讨论】:
标签: python python-3.x pandas dataframe