簡體   English   中英

Pandas - 按條件計算重復值

[英]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,因為只有最后兩個值在同一側(正數)。

您可以按groupnp.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM