我有两个数据帧:
DF0
a b
c 0 6
d 0 9
df1
a b
c 3 2
d 0 0
我有自定义除法功能:
def cdiv(x,y):
if x == 0:
return 0
return x / y
结果我期待:
a b
c 0 3
d 0 Inf
我如何为这两个数据帧应用该函数?
答案 0 :(得分:2)
df = df1.div(df2).mask(df1 == 0, 0)
print (df)
a b
c 0.0 3.000000
d 0.0 inf
如果NaN
中没有DataFrames
值,那么也许可以ayhan commented:
(df0/df1).fillna(0)
numpy.where
的另一个解决方案:
df = pd.DataFrame(np.where(df1 == 0, 0, df1 / df2), index=df1.index, columns=df1.columns)
print (df)
a b
c 0.0 3.000000
d 0.0 inf