2016-03-06 91 views
3

我想獲得一個數據框中一個變量的所有不同或唯一值的列表,該列表與該數據框中另一個變量的特定值一致。熊貓/ Python相當於Stata的「levelsof」

在Stata我會使用類似:

levelsof(ID1) if ID2==i 

如何在Python這樣做呢?

+1

如果您認爲它已回答了您的問題(這裏以及您之前詢問過的其他問題),請務必接受其中一個答案。這向所有人表明問題是否仍然存在,以及是否需要進一步的答案。 – JohnE

回答

2

斯塔塔的levelsof相當於熊貓的unique()。它們都返回一個唯一或不同值的數組。

>>> df=pd.DataFrame({ 'id1':[0,0,1,1,2,2], 
         'id2':[5,5,5,6,6,6] }) 

    id1 id2 
0 0 5 
1 0 5 
2 1 5 
3 1 6 
4 2 6 
5 2 6 

>>> df.loc[ df['id2'] == 5, 'id1' ].unique() 

array([0, 1]) 
1

說你的列ID1ID2和數據幀是df。然後

df.ID1[df.ID2 == i] 

將給出第一列的所有值,其中第二列是i

在此之後,你可以做

df.ID1[df.ID2 == i].value_counts() 

獲得擊穿,

df.ID1[df.ID2 == i].unique() 

獲得獨特的價值觀,

df.ID1[df.ID2 == i].describe() 

得到一個描述,等等(我不知道levelsof究竟是什麼)。

+0

stata/levelsof = pandas /獨特 – JohnE

+0

謝謝,@JohnE