我想用另一个dataframe替换第一个dataframe中的nan字段。像这样的第一次数据访问:
data={'month':['2021-10','2021-11','2021-12','2022-01','2021-02'],
'sessions':[10000,25000,32684,7415,None],
'users':[2500,3600,4120,2154,None],
'new_users':[750,840,980,874,680],
'cr':[1.2,0.9,0.7,None,0.78}
df1=pd.DataFrame(data)
df1
month sessions users new_users cr
2021-10 10000 2500 750 1.2
2021-11 25000 3600 840 0.9
2021-12 32684 4120 980 0.7
2022-01 7415 2154 974 nan
2022-02 nan nan 680 0.78df2:
data2={'month':['2021-12','2022-01','2021-02'],
'sessions':[32684,7415,4122],
'users':[4120,3650,4120]
'cr':[0.7,0.85,0.78]}
df2=pd.DataFrame(data2)
df2
month sessions users cr
2021-12 32684 4120 0.7
2022-01 7415 3650 0.85
2022-02 4122 4120 0.78预期产出:
month sessions users new_users cr
2021-10 10000 2500 750 1.2
2021-11 25000 3600 840 0.9
2021-12 32684 4120 980 0.7
2022-01 7415 2154 974 0.85
2022-02 4122 4120 680 0.78发布于 2022-03-01 08:55:32
使用combine_first和reindex_like保持相同的顺序:
d = df1.set_index('month')
df1 = (d
.combine_first(df2.set_index('month'))
.reindex_like(d).reset_index()
)产出:
month sessions users new_users cr
0 2021-10 10000.0 2500.0 750 1.20
1 2021-11 25000.0 3600.0 840 0.90
2 2021-12 32684.0 4120.0 980 0.70
3 2022-01 7415.0 2154.0 874 0.85
4 2021-02 4122.0 4120.0 680 0.78https://stackoverflow.com/questions/71305873
复制相似问题