說我有一個df這樣的:
Value
0 True
1 True
2 False
3 False
4 False
5 True
6 True
7 False
8 True
9 True
并且說我想為每組True值分配一個標簽,這樣連續的True值被分配相同的標簽,因為它們構成一個集群,而False值總是0:
Value Label
0 True 1
1 True 1
2 False 0
3 False 0
4 False 0
5 True 2
6 True 2
7 False 0
8 True 3
9 True 3
我怎么能在熊貓中做到這一點?
uj5u.com熱心網友回復:
嘗試這個:
>>> df['Label'] = df[df['Value']].index.to_series().diff().ne(1).cumsum()
>>> df
Value Label
0 True 1.0
1 True 1.0
2 False NaN
3 False NaN
4 False NaN
5 True 2.0
6 True 2.0
7 False NaN
8 True 3.0
9 True 3.0
>>>
uj5u.com熱心網友回復:
這是另一種完全獨立于索引的方法:
m = df['Value']
df['Label'] = m.ne(m.shift()).cumsum().where(m)//2 df['Value'].iloc[0]
說明:如果連續值不同,則開始一個新組,僅保留 True 組,將組號除以 2 以考慮交替的 True/False 并根據第一項是 False 還是 True 來更正初始組號。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/315282.html
上一篇:如何合并R中的兩列?
下一篇:從dplyr的隨機列中選擇值
