使用groupby在pandas列中应用计算

使用groupby在pandas列中应用计算,pandas,pandas-groupby,Pandas,Pandas Groupby,以下代码中可能有什么错误?? a) 我需要按区域列分组,并跨列应用一些数学公式: b) 另外,如果我有另一列,让我们说一下日期,需要添加到groupby中,它将如何出现在下面的命令中 df3=dataset.groupby('AREA')(['col1']+['col2']).sum() 表格如下图所示 我认为您可以在分组前对列求和,以获得更好的性能: dataset['new'] = dataset['col1']+dataset['col2'] df3 = dataset.groupby('

以下代码中可能有什么错误?? a) 我需要按区域列分组,并跨列应用一些数学公式: b) 另外,如果我有另一列,让我们说一下日期,需要添加到groupby中,它将如何出现在下面的命令中

df3=dataset.groupby('AREA')(['col1']+['col2']).sum()

表格如下图所示


我认为您可以在分组前对列求和,以获得更好的性能:

dataset['new'] = dataset['col1']+dataset['col2']
df3 = dataset.groupby('AREA', as_index=False)['new'].sum()
但您的解决方案在lambda函数中是可行的:

df3 = (dataset.groupby('AREA')
              .apply(lambda x: (x['col1']+x['col2']).sum())
              .reset_index(name='SUM'))
性能

np.random.seed(123)
N = 100000

dataset = pd.DataFrame({'AREA': np.random.randint(1000, size=N),
                        'col1': np.random.randint(10, size=N),
                        'col2':np.random.randint(10, size=N)})
#print (dataset)

In [24]: %%timeit
    ...: dataset['new'] = dataset['col1']+dataset['col2']
    ...: df3 = dataset.groupby('AREA', as_index=False)['new'].sum()
    ...: 
7.64 ms ± 50.5 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)

In [25]: %%timeit
    ...: df3 = (dataset.groupby('AREA')
    ...:               .apply(lambda x: (x['col1']+x['col2']).sum())
    ...:               .reset_index(name='SUM'))
    ...:               
368 ms ± 5.82 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)

请向我们展示原始数据框,以及您期望从groupby函数获得的数据框结果,谢谢。如果您可以避免使用图像并将原始数据粘贴为文本,则效果会更好。谢谢如果我想把“区域”也作为df3中的一列,索引falsing到底做什么呢?@user12853430-答案被编辑,之前被错误地删除了
area
column。