熊猫将另一列安全地分开(零,无,str)

时间:2019-03-19 18:00:15

标签: pandas dataframe

如何将一栏除以另一零并str安全? 由于某些原因,我不想创建没有零和str的新“ A”和“ B”列。如果无法进行划分,我想得到无。

for f in ./subdir/*.png; do
display $f &
done

我尝试:

df = pd.DataFrame({'A': [0, None, 2, 1 ,5], 'B': [1, 3,'', 'cat', 4]})

实际上,这可行,但是也许还有更优雅的方法?

df['C'] = df['B'].divide(df['A'], fill_value=None) # error with zero devision

1 个答案:

答案 0 :(得分:1)

使用pd.to_numeric来强制非数字类型:

import pandas as pd
import numpy as np

df['C'] = pd.to_numeric(df['B'], errors='coerce').divide(pd.to_numeric(df['A'], errors='coerce'))

#     A    B    C
#0  0.0    1  inf
#1  NaN    3  NaN
#2  2.0       NaN
#3  1.0  cat  NaN
#4  5.0    4  0.8

如果您不希望np.inf,那么:

df['C'] = df.C.replace(np.inf, np.NaN)