我正在使用带有导入的熊猫的python来处理我拥有的csv文件中的某些数据。只是在玩耍以尝试学习新东西。
我有以下数据框:
我想按col1分组数据,以便得到以下结果。这是col1上的QDoc
,col3和col4相乘。
我一直在观看一些youtube视频,并在堆栈溢出时阅读了一些类似的问题,但遇到了麻烦。到目前为止,我涉及以下内容,其中包括创建一个新Col来保存Col3 x Col4的结果:
groupby
答案 0 :(得分:2)
您可以在不创建新列的情况下使用解决方案,您可以创建多个列,并按列df['Col1']
与列sum
进行聚合,它是syntactic sugar
:
gf = (df.Col3 * df.Col4).groupby(df['Col1']).sum().reset_index(name='Col2')
print (gf)
Col1 Col2
0 12345 38.64
1 23456 2635.10
2 45678 419.88
另一种解决方案是通过Col1
通过set_index
创建索引,通过prod
创建多列,并通过sum
通过索引创建最后level=0
:
gf = df.set_index('Col1')[['Col3','Col4']].prod(axis=1).sum(level=0).reset_index(name='Col2')
答案 1 :(得分:1)
几乎,但是最后您要按太多列分组。试试:
gf = df.groupby('Col1')['Col5'].sum()
或者要将其作为数据框而不是将Col1
作为索引(我判断这就是您想要的图像),请将as_index=False
包含在groupby中:
gf = df.groupby('Col1', as_index=False)['Col5'].sum()