[英]How do I specify a column header for pandas groupby result?
我需要分组,然后以串联形式返回列的值。 虽然我设法做到了,但返回的数据框的列名称为0。仅为0。有没有一种方法可以指定结果是什么。
all_columns_grouped = all_columns.groupby(['INDEX','URL'], as_index = False)['VALUE'].apply(lambda x: ' '.join(x)).reset_index()
生成的groupby对象具有标题
INDEX | URL | 0
结果在0列中。 虽然我设法使用
.rename(index=str, columns={0: "variant"}) this seems very in elegant.
有什么办法为列提供标题吗? 谢谢
最简单的方法是将return Series
as_index = False
移除,并将参数name
添加到reset_index
:
样品:
all_columns = pd.DataFrame({'VALUE':['a','s','d','ss','t','y'],
'URL':[5,5,4,4,4,4],
'INDEX':list('aaabbb')})
print (all_columns)
INDEX URL VALUE
0 a 5 a
1 a 5 s
2 a 4 d
3 b 4 ss
4 b 4 t
5 b 4 y
all_columns_grouped = all_columns.groupby(['INDEX','URL'])['VALUE'] \
.apply(' '.join) \
.reset_index(name='variant')
print (all_columns_grouped)
INDEX URL variant
0 a 4 d
1 a 5 a s
2 b 4 ss t y
将agg
应用于列(在本例中为VALUE
)时,可以使用agg
将列名称分配给函数的结果。
# Sample data (thanks @jezrael)
all_columns = pd.DataFrame({'VALUE':['a','s','d','ss','t','y'],
'URL':[5,5,4,4,4,4],
'INDEX':list('aaabbb')})
# Solution
>>> all_columns.groupby(['INDEX','URL'], as_index=False)['VALUE'].agg(
{'variant': lambda x: ' '.join(x)})
INDEX URL variant
0 a 4 d
1 a 5 a s
2 b 4 ss t y
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.