如何对一列进行分组,然后将两列划分在一起?

Han*_*ana 2 python pandas

我是 pandas 新手,我想在 pandas 数据框中创建一个新列。我想按一列进行分组,然后将其他两列划分在一起。

这完全有效:

 df['new_col'] = (df.col2/df.col3)
Run Code Online (Sandbox Code Playgroud)

但是,当我对另一列进行分组时,我所拥有的不起作用:

 df['new_col'] = df.groupby('col1')(df.col2/df.col3)
Run Code Online (Sandbox Code Playgroud)

有谁知道我如何重写上面的代码?谢谢。

piR*_*red 6

设置

df = pd.DataFrame(dict(
    Col1=list('AAAABBBB'),
    Col2=range(1, 9, 1),
    Col3=range(9, 1, -1)
))

df

df.groupby('Col1').sum().eval('Col4 = Col2 / Col3')

  Col1  Col2  Col3
0    A     1     9
1    A     2     8
2    A     3     7
3    A     4     6
4    B     5     5
5    B     6     4
6    B     7     3
7    B     8     2
Run Code Online (Sandbox Code Playgroud)

解决方案
使用pd.DataFrame.eval
我们可以使用eval在管道中创建新列

df.groupby('Col1', as_index=False).sum().eval('Col4 = Col2 / Col3')

  Col1  Col2  Col3      Col4
0    A    10    30  0.333333
1    B    26    14  1.857143
Run Code Online (Sandbox Code Playgroud)