2014-09-03 121 views
0

這是唯一的方法嗎?它非常詳細。在Pandas中訪問Kth組

k = 0 
grouped = df.groupby('A') 
df.ix[grouped.groups[list(grouped.groups)[k]]] 

另外,會不會list(grouped.groups)返回鍵的無意義順序? (無序字典)

除了組的排序,還有沒有一種更加簡潔的方式來獲得一組?我不一定需要獲得第K個,儘管讓它們按照它們出現在數據框中的順序很好。

+2

使用屬性「grouped.groups」和/或「grouped.indices」直接訪問組。你可以使用''list(grouped)''按照排序順序訪問組;你正在訪問一個字典(所以它是無序的) – Jeff 2014-09-04 00:17:44

回答

3

如果知道鍵,簡潔的方式爲get_group

In [11]: df = pd.DataFrame([[1, 2], [1, 4], [5, 6]], columns=['A', 'B']) 

In [12]: g = df.groupby('A') 

In [13]: g.get_group(1) 
Out[13]: 
    A B 
0 1 2 
1 1 4 

如前所述鍵組不一定是有序的,你可以用級別訪問它們(這是):

In [14]: g.grouper.levels 
Out[14]: [Int64Index([1, 5], dtype='int64')] 

如果這只是一列,您可以使用unique讓他們出現,他們即不排序順序:

In [15]: df.A.unique() 
Out[15]: array([1, 5])