Python 如何为pandas groupby结果指定列标题?
我需要分组,然后以串联形式返回列的值。虽然我已经设法做到了这一点,但返回的dataframe有一个列名0。只有0。有没有办法指定结果是什么Python 如何为pandas groupby结果指定列标题?,python,pandas,dataframe,group-by,Python,Pandas,Dataframe,Group By,我需要分组,然后以串联形式返回列的值。虽然我已经设法做到了这一点,但返回的dataframe有一个列名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列
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.
有没有办法为列提供标题?感谢对于返回
系列
,最简单的方法是删除作为_index=False
,并将参数名称
添加到:
样本:
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
最简单的方法是删除
作为返回序列的
,并将参数名称
添加到:
样本:
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
,在本例中)为函数的结果指定列名
# 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
当应用于列时,可以使用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
如果removeas_index=False
get warning,不确定这是否是一个好方法-检查此@jezrael Yes,此方法显示为已设置为不推荐。警告开始出现在v0.20.1中。我使用了一个旧版本来测试它,但没有得到警告。升级时间;)如果removeas_index=False
get warning,不确定这是否是一个好方法-检查此@jezrael Yes,此方法显示为已设置为不推荐。警告开始出现在v0.20.1中。我使用了一个旧版本来测试它,但没有得到警告。升级时间;)