Python 将数据帧组与一列相乘,同时与其他列相乘

Python 将数据帧组与一列相乘,同时与其他列相乘,python,pandas,Python,Pandas,我正在使用导入了熊猫的python来处理csv文件中的一些数据。只是到处玩,试着学点新东西 我有以下数据框: 我想按col1对数据进行分组,以便得到以下结果。这是col1上的groupby,col3和col4相乘 我一直在看一些youtube视频,读一些关于堆栈溢出的类似问题,但我遇到了麻烦。到目前为止,我有以下内容,其中包括创建一个新的Col来保存Col3 x Col4的结果: df['Col5'] = df.Col3 * df.Col4 gf = df.groupby(['col1',

我正在使用导入了熊猫的python来处理csv文件中的一些数据。只是到处玩,试着学点新东西

我有以下数据框:

我想按col1对数据进行分组,以便得到以下结果。这是col1上的
groupby
,col3和col4相乘

我一直在看一些youtube视频,读一些关于堆栈溢出的类似问题,但我遇到了麻烦。到目前为止,我有以下内容,其中包括创建一个新的Col来保存Col3 x Col4的结果:

df['Col5'] = df.Col3 * df.Col4
gf = df.groupby(['col1', 'Col5'])

差不多了,但最后您按太多的列进行分组。尝试:

gf = df.groupby('Col1')['Col5'].sum()
或者将其作为数据帧,而不是将其作为索引(我判断这是您从图像中想要的),在groupby中包括
as_index=False

gf = df.groupby('Col1', as_index=False)['Col5'].sum()

您可以在不创建新列的情况下使用解决方案,您可以使用aggregate
sum
按列对多个列进行聚合,它是:

另一种解决方案是通过
Col1
by、多列by和最后一列
sum
by
level=0创建索引:

gf = df.set_index('Col1')[['Col3','Col4']].prod(axis=1).sum(level=0).reset_index(name='Col2')

这似乎有效,但结果看起来很奇怪。它以以下格式显示结果:1.837280e+03这似乎也可行,但我的结果看起来很奇怪。它以以下格式显示结果:1.837280e+03。我可以将其显示为实数吗?@Silentbob-可能是intigers的大值,如何工作
gf['Col2']=gf['Col2'].astype(np.int64)
gf = df.set_index('Col1')[['Col3','Col4']].prod(axis=1).sum(level=0).reset_index(name='Col2')