使用以下Pandas DataFrame:
>>> df = pd.DataFrame({"id":[1,2,1,2],"name":['a','b','a','c'],"val_1":[1,2,3,4],"val_2":[5,6,7,8]})
>>> df
id name val_1 val_2
0 1 a 1 5
1 2 b 2 6
2 1 a 3 7
3 2 c 4 8
我正在按ID和名称对数据帧进行分组,因此我可以一次遍历每个分组数据:
>>> grp = df.groupby(['id','name'])
<pandas.core.groupby.groupby.DataFrameGroupBy object at 0x103334c88>
现在我要遍历每组的行并打印出来:
>>> for name,group in grp:
... for row,data in group.iterrows():
... print(data)
...
id 1
name a
val_1 1
val_2 5
Name: 0, dtype: object
id 1
name a
val_1 2
val_2 6
Name: 1, dtype: object
id 2
name b
val_1 3
val_2 7
Name: 2, dtype: object
id 2
name c
val_1 4
val_2 8
Name: 3, dtype: object
我要获取的行是:
id name val_1 val_2
0 1 a 1 5
id name val_1 val_2
1 1 a 2 6
id name val_1 val_2
2 2 b 3 7
id name val_1 val_2
3 2 c 4 8
我该如何实现?
答案 0 :(得分:2)
将打印更改为:
print(pd.DataFrame(data).T)
答案 1 :(得分:1)
尝试一下:
In [1949]: for k in grp.groups.keys():
...: print(grp.get_group(k))
...:
id name val_1 val_2
0 1 a 1 5
2 1 a 3 7
id name val_1 val_2
1 2 b 2 6
id name val_1 val_2
3 2 c 4 8