簡體   English   中英

如何基於python中的多個條件計算列中的唯一行

[英]How to count unique rows in a column based on multiple conditions in python

我有一個看起來像這樣的數據框:(處理可能有多個字符變量,我只是簡化了這個問題)

ID              Position            Treatment
--20AxECvv-         0           A
--20AxECvv-         -1          A
--20AxECvv-         -2          A
--h9INKewQf-        0           A
--h9INKewQf-        -1          B
zZU7a@8jN           0           B
QUeSNEXmdB          0           C
QUeSNEXmdB          -1          C
qu72Ql@h79          0           C

我只想保留排他性治療的ID,換句話說,即使經過多次治療,也要保留僅接受一種治療的ID。 之后,我想對每種治療的ID數求和。 結果將是:

ID              Position            Treatment
--20AxECvv-         0           A
--20AxECvv-         -1          A
--20AxECvv-         -2          A
zZU7a@8jN           0           B
QUeSNEXmdB          0           C
QUeSNEXmdB          -1          C   
qu72Ql@h79          0           C

和:

A : 1 
B : 1
C : 2

我有任何一個ida如何解決這個問題,也許是在一個循環中一個循環,但是我是Python / panda的初學者。謝謝

您可以按ID分組並根據唯一行的條件數量== 1過濾行

df1 = df.loc[df.groupby('ID').Treatment.filter(lambda x: x.nunique()==1).index]

或如@Igor Raush所建議的,

df1 = df.groupby('ID').filter(lambda g: g.Treatment.nunique() == 1)    

    ID          Position    Treatment
0   --20AxECvv-     0           A
1   --20AxECvv-     -1          A
2   --20AxECvv-     -2          A
5   zZU7a@8jN       0           B
6   QUeSNEXmdB      0           C
7   QUeSNEXmdB      -1          C
8   qu72Ql@h79      0           C

並獲得唯一計數

df1.groupby('Treatment').ID.nunique()

Treatment
A        1
B        1
C        2

暫無
暫無

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

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