使用agg的pandas groupby无法在多列上使用

法尔尼克

我正在尝试将多列合并到每个列中,这些列基于以熊猫为单位的分组。下面是我正在使用的代码

grouped_df = df.groupby(['d_id', 'time']).agg({'d_name': lambda x: tuple(x)},  
{'ver': lambda x: tuple(x)},
{'f_name': lambda x: tuple(x)})

这只给我列表中的第一列(d_name),d_id和time在grouped_df中。其他两列未显示为列表。我尝试过使用list,但是发现list具有agg函数的问题,因此我求助于元组。让我知道我在这里做错了什么。

感谢RafaelC的答案。现在,我尝试将这些列表列作为grouped_df添加到原始数据框。当我看到grouped_df中的列时,它们显示为

Index([u'ver', u'f_name', u'd_name'], dtype='object')

但是当我做头的时候

 ver  \
d_id  time
1    2018-06-01   (ver1, ver2, ver3.....
2    2018-06-01   (ver1, ver2, ver3.....
3    2018-06-01   (ver1, ver2, ver3.....


f_name  \
d_id   time
1  2018-06-01   (f_name1, f_name2, f_name2.....
2  2018-06-01   (f_name1, f_name2, f_name2.....
3  2018-06-01   (f_name1, f_name2, f_name2.....

d_name
d_id   time
1 2018-06-01   (d_name1, dname2, d_name3...
2 2018-06-01   (d_name1, dname2, d_name3...
3 2018-06-01   (d_name1, dname2, d_name3...

如何获得以下d_id时间ver d_name f_name,其中ver,d_name和f_name是列表。

希望这很清楚。

拉斐尔克

使用单个参数而不是三个

{'d_name': lambda x: tuple(x), 'ver': lambda x: tuple(x), 'f_name': lambda x: tuple(x)}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章