【问题标题】:Division by 0 in pandas -Avoid it在熊猫中除以 0 -避免它
【发布时间】:2023-02-01 22:14:28
【问题描述】:
df = pd.DataFrame({f'Diff (a - b)': c['a'] - c['b'],
'Diff in %': (c['a'] - c['b']) * 100 / c['a']})

如果 c['a'] 中的某个值将为 0,则除以 0 将是不正确的。 整体功能不会失败,并在这些情况下输出 inf。

如何避免这种情况,而不是 inf 在这些情况下添加 0(当 c['a'] == 0 时)?

【问题讨论】:

  • 'c' 是字典还是数据框?
  • c 是 Dataframe import pandas as pd a = [0, 1, 2] b = [4, 5, 6] c = pd.DataFrame({'a': a, 'b': b}) df = pd.DataFrame ({'col21': (c['a'] - c['b']) * 100 / c['a']})
  • col21 0 -> -inf 1 -> -400.0 2 -> -200.0

标签: python pandas dataframe


【解决方案1】:

您可以使用 replace 方法将 np.inf 替换为 0:

a = [0, 1, 2]
b = [4, 5, 6]
c = pd.DataFrame({'a': a, 'b': b})
df = pd.DataFrame({'col21': (c['a'] - c['b']) * 100 / c['a']})

df = df.replace({-np.inf: 0})
print(df)

# Output
   col21
0    0.0
1 -400.0
2 -200.0

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-24
    • 1970-01-01
    • 2021-06-08
    • 2022-12-05
    • 2018-03-16
    相关资源
    最近更新 更多