我确实在谷歌上花了几个小时,但没能找到解决问题的办法.

col1         col2     col3 
2022-03-01   234       0
2022-03-01   342       67
2022-03-01   0         0
2022-03-01   0         23

我需要把Col2除以Col3,结果应该是这样的:

col1         col4 
2022-03-01   0      
2022-03-01   5.1
2022-03-01   0        
2022-03-01   0 

我怎么能做到呢??

我确实试着找到了解决方案,但在谷歌里总是有一些基本的东西,比如只把数字除以数字,而不是除以零等等.

非常感谢.

推荐答案

如果没有小数将无限值替换为0,然后替换为缺失值:

import numpy as np

df['col4'] = df['col2'].div(df['col3']).replace(np.inf,0).fillna(0)
print (df)
         col1  col2  col3      col4
0  2022-03-01   234     0  0.000000
1  2022-03-01   342    67  5.104478
2  2022-03-01     0     0  0.000000
3  2022-03-01     0    23  0.000000

带小数的解决方案:

如果可能,将其转换为整数:

df['col4'] = df['col2'].astype(int).div(df['col3'].astype(int)).replace(np.inf,0).fillna(0)
print (df)
         col1 col2 col3      col4
0  2022-03-01  234    0  0.000000
1  2022-03-01  342   67  5.104478
2  2022-03-01    0    0  0.000000
3  2022-03-01    0   23  0.000000

如果不是,则将0替换为1,如果至少有一列中的值为0,则将其设置为0:

df['col4'] = df['col2'].div(df['col3'].replace(0, 1)).mask(df[['col2', 'col3']].eq(0).any(1), 0)
print (df)
         col1 col2 col3                           col4
0  2022-03-01  234    0                              0
1  2022-03-01  342   67  5.104477611940298507462686567
2  2022-03-01    0    0                              0
3  2022-03-01    0   23                              0

Python相关问答推荐

Inquirer库不适用于Pyterfly

如何从同一类的多个元素中抓取数据?

如何最好地处理严重级联的json

已安装' owiener ' Python模块,但在导入过程中始终没有名为owiener的模块

获取Azure Pipelines以从pyproject.toml(而不是relevments_dev.文本)安装测试环境

当测试字符串100%包含查询字符串时,为什么t fuzzywuzzy s Process.extractBests不给出100%分数?

模型序列化器中未调用现场验证器

使用GEKKO在简单DTE系统中进行一致初始化

Pandas 第二小值有条件

如何在具有重复数据的pandas中对groupby进行总和,同时保留其他列

根据二元组列表在pandas中创建新列

如何在Python中并行化以下搜索?

创建可序列化数据模型的最佳方法

计算分布的标准差

Python导入某些库时非法指令(核心转储)(beautifulsoup4."" yfinance)

启用/禁用shiny 的自动重新加载

如何使用SentenceTransformers创建矢量嵌入?

寻找Regex模式返回与我当前函数类似的结果

Flask Jinja2如果语句总是计算为false&

在方法中设置属性值时,如何处理语句不可达[Unreacable]";的问题?