我需要分组,然后以连接的形式返回列的值。虽然我已设法这样做,但返回的数据框的列名为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.
是否可以为列提供标题?感谢
答案 0 :(得分:3)
最简单的是删除as_index = False
以返回Series
并将参数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
答案 1 :(得分:1)
当应用于列(在本例中为agg
)时,可以使用VALUE
将列名称指定给函数的结果。
# 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