[英]Change or Fill dataframe cell based on condition by group
原DF:
Group Col_A Day
A 0 1
A 0 2
A 0 3
A 1 4
A 1 5
A 1 6
A 1 7
B 0 1
B 0 2
B 0 3
B 1 4
B 1 5
B 0 6
B 1 7
我需要做的是,按组将 Col_A 中的值从 0 更改为 1,以防 0 值跟随值 1。在这个简单的示例中,这发生在第 6 天的 B 组中。
所需的DF:
Group Col_A Day
A 0 1
A 0 2
A 0 3
A 1 4
A 1 5
A 1 6
A 1 7
B 0 1
B 0 2
B 0 3
B 1 4
B 1 5
B 1 6
B 1 7
我的实际 dataframe 有数千组和更多列,仅供参考。 任何建议表示赞赏。
使用df.loc[df.groupby('Group')['Col_A'].diff().eq(-1), 'Col_A'] = 1
。
如果要将 1 之后的所有 0 更改为 1,则可以使用groupby_cummax
:
df['Col_A'] = df.groupby('Group')['Col_A'].cummax()
Output:
Group Col_A Day
0 A 0 1
1 A 0 2
2 A 0 3
3 A 1 4
4 A 1 5
5 A 1 6
6 A 1 7
7 B 0 1
8 B 0 2
9 B 0 3
10 B 1 4
11 B 1 5
12 B 1 6
13 B 1 7
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.