序列、数据框的combine_first( )方法

combine_first(  )方法

 

序列的例子

#combine_first()方法前的是调用参数,在括号里的是传递参数,把前者为np.nan的用后者相同位置的数来补充,相当于“打补丁”

ser1=pd.Series([np.nan,2.5,np.nan,3.5,4.5,np.nan],index=['f', 'e', 'd', 'c', 'b', 'a'])
ser2=pd.Series(np.arange(len(ser1)),dtype='float',index=['f', 'e', 'd', 'c', 'b', 'a'])
ser2[-1]=np.nan

mask=ser2[:-2].combine_first(ser1[2:])
mask2=ser1[2:].combine_first(ser2[:-2])

print("原序列:\n",ser1)
print(ser2)
print("ser2.ser1结果:\n",mask)
print("ser1.ser2结果:\n",mask2)

结果: 注意红圈中 的区别,是谁给谁补洞

 

 END

 

 

 

数据框的例子

df1 = pd.DataFrame({'a': [1., np.nan, 5., np.nan],'b': [np.nan, 2., np.nan, 6.],'c': range(2, 18, 4)})
df2 = pd.DataFrame({'a': [5., 4., np.nan, 3., 7.],'b': [np.nan, 3., 4., 6., 8.]})

print("数据框:\n",df1,"\n",df2)


print("\ndf1.combine_first(df2)的结果:\n",df1.combine_first(df2))
print("\ndf2.combine_first(df1)的结果:\n",df2.combine_first(df1))

 

结果: 注意是谁给谁补洞

 

  END

 

posted @ 2020-04-26 22:47  limalove  阅读(1956)  评论(0编辑  收藏  举报