熊猫-遍历groupBy结果时获取一行数据

时间:2018-11-14 13:41:55

标签: python pandas

使用以下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

我该如何实现?

2 个答案:

答案 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