[英]Pandas - Count repeating values by condition
數據框:
group val count???
a 2 1
a 2 2
b 1 1
a 2 3
b -3 1
b -3 2
a -7 1
a -5 2
我有列“group”和“val”,但我不知道如何編寫 pandas 代碼來獲取列“count”?
邏輯是這樣的,它應該計算按“組”列分組的同一側(正或負)的連續值的數量。
當換邊時,計數器應重置為 1 並重新開始計數。
例如,如果在一組中我們有數字 1、-1、1、1,那么輸出將是 1、1、1、2,因為只有最后兩個值在同一側(正數)。
您可以按group
和np.sign(df['val'])
分組
df['count'] = df.groupby(['group', np.sign(df['val'])]).cumcount().add(1)
print(df)
group val count??? count
0 a 2 1 1
1 a 2 2 2
2 b 1 1 1
3 a 2 3 3
4 b -3 1 1
5 b -3 2 2
6 a -7 1 1
7 a -5 2 2
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.