2017-08-21 56 views
0

我有看起來像一個數據幀進行計數的行:(治療有,我只是簡化問題字符變量的多個possibily)如何基於在python一列中的可變位置

ID    Position   Treatment 
--20AxECvv-   0   A 
--20AxECvv-   -1   A 
--20AxECvv-   -2   A 
--h9INKewQf-  0   A 
--h9INKewQf-  -1   B 
--h9INKewQf-  -2   B 
--h9INKewQf-  -3   B 
--h9INKewQf-  -4   B 
--h9INKewQf-  -5   B 
--h9INKewQf-  -6   B 
--h9INKewQf-  -7   B 
[email protected]   0   B 
QUeSNEXmdB   0   C 
QUeSNEXmdB   -1   C 
[email protected]   0   C 

我只想用Python來保持每個ID的最小位置。

其結果將是:

ID    Position   Treatment 
--20AxECvv-   -2   A 
--h9INKewQf-  -7   B 
[email protected]   0   B 
QUeSNEXmdB   -1   C 
[email protected]   0   C 

我是初學者,我覺得我有最小位置使用GROUPBY和過濾,但我有任何想法如何把它寫。感謝提前:)

回答

1

您還可以使用df.sort_values使用df.drop_duplicates排序您的數據幀和刪除重複項:使用GROUPBY

In [795]: df.sort_values('Position').drop_duplicates('ID') 
Out[795]: 
       ID Position Treatment 
10 --h9INKewQf-  -7   B 
2 --20AxECvv-  -2   A 
13 QUeSNEXmdB  -1   C 
11  [email protected]   0   B 
14 [email protected]   0   C 
+0

通過這樣做,我有一些ID是與最後一個不同的治療位置重複。 –

+0

@AnnaCarrere好的,順序是不同的,但它正是你想要的行。 –

+0

當我在整個數據框中應用它時仍然有同樣的問題,我不明白爲什麼 –

0

和MIN

df.groupby('ID').min() 
相關問題