作为一个最小的工作示例,我有两个数据集,两个键[ col1
和col2
]和多个数据列[以z_
开始的列]。
df1 = pd.DataFrame(data= {'col1': [1, 2], 'col2': ["A", "B"], 'z_col3': [3, np.nan], 'z_col4': [3, 4]} )
df2 = pd.DataFrame(data= {'col1': [1,2], 'col2': ["C", "B"], 'z_col3': [3, 4], 'z_col4': [3, 4]} )
我想进行一次合并,其中z_
列中缺失值的df1
将从df2
中获取值。有没有什么明智的方法来做到这一点?这是一个MWE,所以我有一个相当大的表与50+列。
我尝试了以下方法,但它产生了一个错误:
df1[['z_col3','z_col4']] = df2[['col1','col2']].map(df2.set_index(['col1','col2'])[['z_col3','z_col4']])
你知道怎么做吗?
3条答案
按热度按时间nc1teljy1#
我会考虑在对特定列进行过滤后使用带有
fillna()
的for循环。记住你可以使用fillna()
而不是merge:vsaztqbk2#
您可以合并:
然后使用np,其中:
以后可以将列名重命名为它们的原始名称
要处理多个(50多个)列,可以用途:
vhmi4jdf3#
给定测试 Dataframe :
然后简单地打印它: