【问题标题】:Accessing the Kth group in Pandas访问 Pandas 中的第 K 个组
【发布时间】:2014-10-28 14:32:09
【问题描述】:

这是唯一的方法吗?很啰嗦。

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

另外,list(grouped.groups) 不会以无意义的顺序返回键吗? (无序字典)

除了分组的排序,还有没有更简洁的方法来获得一个分组?我不一定需要获得第 K 个,尽管按照它们在数据框中出现的顺序来获得它们会很好。

【问题讨论】:

  • 使用属性grouped.groups 和/或grouped.indices 直接访问组。您可以使用list(grouped) 以排序顺序访问组;您正在访问字典(因此它是无序的)

标签: python python-3.x pandas


【解决方案1】:

如果你知道密钥,简洁的方式是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])

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-07
    • 2021-12-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多