我正在尝试将两个数据集(在某些情况下,这两个数据集相互补充)合并到一个新的数据帧中,而无需重复列。换句话说,我有两个数据帧。在某些列(在两个数据帧中具有相同的名称)中,我需要的信息将在其中一个列中,但不是在两个列中
例如,请参见下面我创建的反映当前问题的虚构数据帧。这些数据帧包含同3个人的信息。注意“性别”一栏。当一个中缺少该值时,另一个中会找到该值,反之亦然。两列值的组合为我们提供了一个完整的性别列。理想情况下,我会在下面找到您需要的df_
(实际数据集有相当多的列,如性别)
df_have1 = pd.DataFrame({'age':[7,34,19], 'gender':['F',np.nan,'M'], 'profession':['student', 'CEO', 'artist']})
df_have1
df_have2 = pd.DataFrame({'age':[7,34,19], 'gender':['np.nan','F',np.nan], 'interests':['acting', 'cars', 'gardening']})
df_have2
df_need = pd.DataFrame({'age':[7,34,19], 'gender':['F','F','M'], 'profession':['student', 'CEO', 'artist'], 'interests':['acting', 'cars', 'gardening']})
df_need
我试过pd.concat,不幸的是它复制了性别栏。pd.merge和join也是如此
pd.concat([df_have1, df_have2], axis=1)
merge()
或join()
将与列后缀一起使用fillna()
到目前为止,@Rob Raymond方法更好
但是,如果两个数据帧具有相同的行数,则可以使用字典和for循环获得类似的结果(在框架中的实践不佳)
一个更通用的代码改编自@Rob Raymond sugestion
相关问题 更多 >
编程相关推荐