Python 如何为pandas groupby结果指定列标题?

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列

我需要分组,然后以串联形式返回列的值。虽然我已经设法做到了这一点,但返回的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列中。 虽然我已经使用

   .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

如果remove
as_index=False
get warning,不确定这是否是一个好方法-检查此@jezrael Yes,此方法显示为已设置为不推荐。警告开始出现在v0.20.1中。我使用了一个旧版本来测试它,但没有得到警告。升级时间;)如果remove
as_index=False
get warning,不确定这是否是一个好方法-检查此@jezrael Yes,此方法显示为已设置为不推荐。警告开始出现在v0.20.1中。我使用了一个旧版本来测试它,但没有得到警告。升级时间;)