你好,StackOverflowers!我有一个pandas DataFrame。
我有一个pandas DataFrame
df = pd.DataFrame({
'A':[1,1,2,1,3,3,1,6,3,5,1],
'B':[10,10,300,10,30,40,20,10,30,45,20],
'C':[20,20,20,20,15,20,15,15,15,15,15],
'D':[10,20,30,40,80,10,20,50,30,10,70],
'E':[10,10,10,22,22,3,4,5,9,0,1]
})
然后,我把它分组,在一些列
groups = df.groupby(['A', 'B', 'C'])
我想根据groupby指数对原始数据进行选择过滤。
例如,我想从groupby指数中得到3个随机组合。
有什么想法吗?
而不是沿所有组迭代 len(indices)
时代,并在各自的 indices
值,得到一个组的列表。keys
词典中的 GroupBy.groups
,并做单次呼叫 GroupBy.get_group
对于每个指数。
keys = list(groups.groups.keys())
# [(1, 10, 20), (1, 20, 15), (2, 300, 20)...
pd.concat([groups.get_group(keys[i]) for i in indices])
A B C D E
6 1 20 15 20 4
10 1 20 15 70 1
5 3 40 20 10 3
4 3 30 15 80 22
8 3 30 15 30 9
我可以做的是
groups = df.groupby(['A', 'B', 'C'])
indices = [1, 4, 3]
pd.concat([[df_group for names, df_group in groups][i] for i in indices])
其结果是.NET Framework 2.0。
Out[24]:
A B C D E
6 1 20 15 20 4
10 1 20 15 70 1
5 3 40 20 10 3
4 3 30 15 80 22
8 3 30 15 30 9
我想知道是否有更优雅的方法,也许已经在pd.groupby()中实现了?