熊猫数据框按一列分组,而乘以其他列

时间:2018-11-03 16:36:22

标签: python pandas

我正在使用带有导入的熊猫的python来处理我拥有的csv文件中的某些数据。只是在玩耍以尝试学习新东西。

我有以下数据框:

Image of Data Frame

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

Image of result I would like

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

groupby

2 个答案:

答案 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()