[英]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.