[英]Count number of zeros after every non-zero clusters in python
我想在 dataframe 中的每批非零數字之后計算零的數量。 例如,請參閱此 dataframe。 在第一個非零簇之后的 A 列中的零數是 2。然后在下一個簇之后,零的數量是 4,在最后一個簇之后,零的數量是 2。所以 output 應該是 [2,4 ,2]。
Time A B C
60 5 4 3
120 4 5 2
180 5 5 5
240 0 0 0
300 0 0 0
360 6 7 8
420 5 6 7
480 0 0 0
540 0 0 0
600 0 0 0
660 0 0 0
720 5 6 6
780 5 6 6
840 0 0 0
900 0 0 0
>>> from itertools import groupby
>>> [len(list(group)) for key, group in groupby(df.A) if key == 0]
[2, 4, 2]
元素本身用於分組,這意味着每個不同的元素將開始一個新的組; 因此,每當一個0
開始一個組作為鍵時,我們將(惰性)組的長度作為結果。
for c in df.loc[:, "A":]:
m = df[c] == 0
print(
c,
df[c]
.groupby((m != m.shift(1)).cumsum())
.apply(lambda x: len(x) if x.iat[0] == 0 else np.nan)
.dropna()
.tolist(),
)
印刷:
A [2.0, 4.0, 2.0]
B [2.0, 4.0, 2.0]
C [2.0, 4.0, 2.0]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.