【发布时间】:2021-04-27 18:01:44
【问题描述】:
抱歉,之前有人问过这个问题,但我无法让这些解决方案为我工作(我是使用 Python 的原生 MATLAB 用户)。
我有一个数据框,我在其中取一个 df 的前 7 列的行平均值并将其除以另一个。但是,这个数据集中有很多零,我想用零替换零除法错误(因为这对我很有意义)而不是自然返回的 nan(因为我正在实现它)。
到目前为止我的代码:
col_ind = list(range(0,7))
df.iloc[:,col_ind].mean(axis=1)/other.iloc[:,col_ind].mean(axis=1)
在这里,如果 other = 0,则返回 nan,但如果 df = 0,则返回 0。我尝试了很多建议的解决方案,但似乎没有一个注册。例如:
def foo(x,y):
try:
return x/y
except ZeroDivisionError:
return 0
foo(df.iloc[:,col_ind].mean(axis1),other.iloc[:,col_ind].mean(axis=1))
然而,这会返回相同的值而不使用定义的 foo。我怀疑这是因为我在操作系列而不是单一值,但我不确定也不知道如何解决它。这些数据框中也有实际的 nan。任何帮助表示赞赏。
【问题讨论】:
-
欢迎来到 StackOverflow(和 Python),您能提供更多代码吗?例如,您的 Dataframe
df是什么?
标签: python pandas dataframe divide-by-zero