为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

www说 2021-08-17 17:10:23
使用以下 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_20   1    a      1      51   2    b      2      62   1    a      3      73   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       1name     aval_1    1val_2    5Name: 0, dtype: objectid       1name     aval_1    2val_2    6Name: 1, dtype: objectid       2name     bval_1    3val_2    7Name: 2, dtype: objectid       2name     cval_1    4val_2    8Name: 3, dtype: object我想得到的行是:   id name  val_1  val_20   1    a      1      5   id name  val_1  val_21   1    a      2      6   id name  val_1  val_22   2    b      3      7   id name  val_1  val_23   2    c      4      8我怎样才能做到这一点?
查看完整描述

2 回答

?
隔江千里

TA贡献1906条经验 获得超10个赞

将打印更改为:

print(pd.DataFrame(data).T)


查看完整回答
反对 回复 2021-08-17
?
拉丁的传说

TA贡献1789条经验 获得超8个赞

试试这个:


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


查看完整回答
反对 回复 2021-08-17
  • 2 回答
  • 0 关注
  • 433 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号