猿问

Pandas - 循环遍历 groupBy 结果时获取一行数据

使用以下 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 和 name 对数据框进行分组,因此我可以一次遍历每个组数据:


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

我怎样才能做到这一点?


www说
浏览 434回答 2
2回答

隔江千里

将打印更改为:print(pd.DataFrame(data).T)

拉丁的传说

试试这个:In [1949]: for k in grp.groups.keys():&nbsp; &nbsp; &nbsp; ...:&nbsp; &nbsp; &nbsp;print(grp.get_group(k))&nbsp; &nbsp; &nbsp; ...:&nbsp; &nbsp; &nbsp;&nbsp; &nbsp;id name&nbsp; val_1&nbsp; val_20&nbsp; &nbsp;1&nbsp; &nbsp; a&nbsp; &nbsp; &nbsp; 1&nbsp; &nbsp; &nbsp; 52&nbsp; &nbsp;1&nbsp; &nbsp; a&nbsp; &nbsp; &nbsp; 3&nbsp; &nbsp; &nbsp; 7&nbsp; &nbsp;id name&nbsp; val_1&nbsp; val_21&nbsp; &nbsp;2&nbsp; &nbsp; b&nbsp; &nbsp; &nbsp; 2&nbsp; &nbsp; &nbsp; 6&nbsp; &nbsp;id name&nbsp; val_1&nbsp; val_23&nbsp; &nbsp;2&nbsp; &nbsp; c&nbsp; &nbsp; &nbsp; 4&nbsp; &nbsp; &nbsp; 8
随时随地看视频慕课网APP

相关分类

Python
我要回答