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