python pandas DataFrame如何把两个DataFrame合并,pd.merge_ordered(), 替换df数据df.replace() ,df.apply()
python pandas DataFrame如何把两个DataFrame合并,pd.merge_ordered()
1 import pandas as pd 2 import numpy as np 3 df1 = pd.DataFrame({ 4 'datetime':['2021-01-01','2021-01-02','2021-01-03','2021-01-10'], 5 'v1':[1,0,0,1], 6 'v2':[0,0,0,0], 7 'v3':['a','b','c','d'] 8 }) 9 df2 = pd.DataFrame({ 10 'datetime':['2021-01-01','2021-01-02','2021-01-11','2021-01-12'], 11 'v1':[1,1,0,0], 12 'v2':[1,0,1,0], 13 'v3':['e','e','e','e'] 14 }) 15 print(df1) 16 print(df2) 17 18 df3 = pd.merge_ordered(df1,df2,on=['datetime'])#基于‘datetime’合并df1,df2 19 print(df3) 20 df3 = df3.replace(np.nan,0)#用0替换NAN 21 print(df3) 22 df3['v1'] = df3['v1_x'] + df3['v1_y'] 23 df3['v2'] = df3['v2_x'] + df3['v2_y'] 24 df3 = df3.replace(2,1) 25 df3['v3'] = df3.apply(lambda x: x['v3_y'] if x['v3_x'] == 0 else x['v3_x'],axis=1)#当df1['v3']没有值时,取df2['v3'],否则取df1['v3'] 26 print(df3)
运行结果:


浙公网安备 33010602011771号