我是 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)
有谁知道我如何重写上面的代码?谢谢。
设置
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)
| 归档时间: |
|
| 查看次数: |
6202 次 |
| 最近记录: |