繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM