[英]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.