我的数据框:
df1
group ordercode quantity
0 A 1
B 3
1 C 1
E 2
D 1
我通过groupby
功能组成了每个小组。
我需要使用组号提取数据。
我想要的输出。
在:获取组0 退出:
ordercode quantity
A 1
B 3
或
group ordercode quantity
0 A 1
B 3
任何建议将不胜感激。
答案 0 :(得分:2)
使用DataFrame.xs
,也可以使用参数drop_level=False
:
#if need remove original level
df1 = df.xs(0)
print (df1)
quantity
ordercode
A 1
B 3
#if avoid remove original level
df1 = df.xs(0, drop_level=False)
print (df1)
quantity
group ordercode
0 A 1
B 3
编辑:
dfs = [df1, df2, df3]
dfs = [x[x['group'] == 0] for x in dfs]
print (dfs)
答案 1 :(得分:2)
In [131]: df.loc[pd.IndexSlice[0,:]]
Out[131]:
quantity
ordercode
A 1
B 3
或
In [130]: df.loc[pd.IndexSlice[0,:], :]
Out[130]:
quantity
group ordercode
0.0 A 1
B 3
答案 2 :(得分:2)
您可以在指定列后使用GroupBy.get_group
。这是一个演示:
df = pd.DataFrame({'A': ['foo', 'bar'] * 3,
'B': np.random.rand(6),
'C': np.arange(6)})
gb = df.groupby('A')
print(gb[gb.obj.columns].get_group('bar'))
A B C
1 bar 0.523248 1
3 bar 0.575946 3
5 bar 0.318569 5