熊猫数据框分组求和

Posted

技术标签:

【中文标题】熊猫数据框分组求和【英文标题】:pandas dataframe groupby summation 【发布时间】:2014-07-11 15:43:59 【问题描述】:

输入:

       Date letters numbers mixed         new
0  1/2/2014       a       6    z1  1/2/2014 a
1  1/2/2014       a       3    z1  1/2/2014 a
2  1/3/2014       c       1    x3  1/3/2014 c

我想对newnumbers 进行分组,以便输出为:

       Date letters numbers mixed         new
0  1/2/2014       a       9    z1  1/2/2014 a
1  1/3/2014       c       1    x3  1/3/2014 c

我浏览过这里:http://pandas.pydata.org/pandas-docs/stable/groupby.html 但没有运气。

这是我的代码:

import pandas
a=[['Date', 'letters', 'numbers', 'mixed'], ['1/2/2014', 'a', '6', 'z1'], ['1/2/2014', 'a', '3', 'z1'], ['1/3/2014', 'c', '1', 'x3']]
df = pandas.DataFrame.from_records(a[1:],columns=a[0])
f=[]
for i in range(0,len(df)):
    f.append(df['Date'][i] + ' ' + df['letters'][i])
df['new']=f

此外,任何将dateletters 连接而不循环的技巧也会有所帮助。

【问题讨论】:

【参考方案1】:

您必须将您的numbers 列转换为int

import pandas as pd
a=[['Date', 'letters', 'numbers', 'mixed'], ['1/2/2014', 'a', '6', 'z1'], ['1/2/2014', 'a', '3', 'z1'], ['1/3/2014', 'c', '1', 'x3']]
df = pd.DataFrame.from_records(a[1:],columns=a[0])
df['new'] = df.Date + " " + df.letters
df.numbers = df.numbers.astype(int)

print df

       Date letters  numbers mixed         new
0  1/2/2014       a        6    z1  1/2/2014 a
1  1/2/2014       a        3    z1  1/2/2014 a
2  1/3/2014       c        1    x3  1/3/2014 c

您可以获取要合并的数据框:

df_to_merge = df[df.columns[~df.columns.isin(['numbers'])]].drop_duplicates()

然后你可以做你的groupby

df_grouped = pd.DataFrame(df.groupby('new').numbers.sum()).reset_index()

为了得到你发布的结果merge

df_result = df_to_merge.merge(df_grouped)
print df_result

       Date letters mixed         new  numbers
0  1/2/2014       a    z1  1/2/2014 a        9
1  1/3/2014       c    x3  1/3/2014 c        1

【讨论】:

感谢您的指点。您能否修改您的答案以获得一般解决方案? IE。如果我有 50 列而不是示例中的 4 列怎么办。那将不胜感激。 顺便说一句,我试过你的代码,但仍然得到原始输入 你必须发布你的输出,因为我得到了你想要的结果。我会更新以使其更通用。另外...您真的需要“新”列还是只是使用它来分组? 感谢您的更新。我确实需要“新”列,它将成为未来数据集的一部分。 @jason_cant_code 您可以使用df['big numbers'] 引用该列,pandas 文档和简介中包含所有这些语法信息

以上是关于熊猫数据框分组求和的主要内容,如果未能解决你的问题,请参考以下文章

对分组的熊猫数据框中的行求和并返回 NaN

我如何在熊猫中分组然后对值求和? [复制]

在熊猫中按周分组

熊猫数据框分组图

熊猫数据框列的分组和计数

如何按定义的时间间隔对熊猫数据框进行分组?