我有2个dfs:
df1
'TOM' 'MIKE' 'DISTANCE'
'A' 5 7 2
'B' 4 5 9
'C' 3 3 0
df2
'LAURA' 'LISA' 'DISTANCE'
'A' 4 3 0
'B' 4 3 9
'C' 1 2 3
我已经将它们与axis = 1一起连接了,但是我想通过仅将df1.DISTANCE中的值添加为df2.DISTANCE的值来将DISTANCE
列合并为1。
所需的输出将是:
df3
'TOM' 'MIKE' 'DISTANCE' 'LAURA' 'LISA'
'A' 5 7 2 4 3
'B' 4 5 9 4 3
'C' 3 3 3 1 2
答案 0 :(得分:3)
首先,我们将两个数据帧join
在一起,以便我们可以指定一个rsuffix
,以便可以从两个数据帧中区分出两个DISTANCE
列。
然后,我们使用np.where
将第一个数据帧中的0
替换为与第二个数据帧的距离:
df3 = df1.join(df2, rsuffix='_2')
df3['DISTANCE'] = np.where(df3['DISTANCE'].eq(0), df3['DISTANCE_2'], df3['DISTANCE'])
df3 = df3.drop(columns=['DISTANCE_2'])
输出
TOM MIKE DISTANCE LAURA LISA
0 5 7 2 4 3
1 4 5 9 4 3
2 3 3 3 1 2
或者我们可以使用.loc
替换值:
df3 = df1.join(df2, rsuffix='_2')
df3.loc[df3['DISTANCE'].eq(0), 'DISTANCE'] = df3['DISTANCE_2']
df3 = df3.drop(columns=['DISTANCE_2'])
答案 1 :(得分:0)
尝试combine_first
df1["'DISTANCE'"].mask(df1["'DISTANCE'"].eq(0),inplace=True)
df=df1.combine_first(df2)
df
'DISTANCE' 'LAURA' 'LISA' 'MIKE' 'TOM'
'A' 2.0 4.0 3.0 7 5
'B' 9.0 4.0 3.0 5 4
'C' 3.0 1.0 2.0 3 3