簡體   English   中英

如何創建一個列來標識行數,直到下一次使用熊貓在另一列中出現值?

[英]How to create a column that identifies the number of rows until the next occurrence of a value in another column with pandas?

我正在嘗試確定如何創建一個列來標識行數,直到下一次在另一列中出現值之前,pandas 本質上執行以下功能:

rowid  event   countdown
1      False   NaT
2      True    0 # resets countdown
3      False   1
4      False   2
5      True    0 # resets countdown
6      False   1

其中事件列定義列中的事件是否發生 (True) 或不發生 (False)。 倒計時列標識了在所述事件發生之前必須發生的后續行/步驟的數量。 我嘗試了以下方法:

y['block'] = (y['event'] != y['event'].shift(1)).astype(int).cumsum()
y['countdown'] = y.groupby('block').transform(lambda x: range(1, len(x) + 1))

但這對於操作來說似乎非常低效,並且不一定按照描述執行操作,將時間段識別為組而不是簡單的推出。

有誰知道我如何簡潔地完成這個,謝謝!

我會做什么cumcount

df.groupby(df.event.cumsum()).cumcount()
Out[46]: 
0    0
1    0
2    1
3    2
4    0
5    1
dtype: int64

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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