Pandas中数据帧的自定义计算功能

时间:2017-05-10 11:09:25

标签: python pandas

我有两个数据帧:

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

我如何为这两个数据帧应用该函数?

1 个答案:

答案 0 :(得分:2)

div需要mask

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