我有3个数据框,如下所示
df1
id first_name surname state
1
88
190
2509
....
df2
id given_name surname state street_num
17 John Doe NY 5
88 Tom Murphy CA 423
190 Dave Casey KY 250
....
df3
id first_name family_name state car
1 John Woods NY ford
74 Tom Kite FL vw
2509 Mike Johnson KY toyota
df1中的某些ID在df2中,而其他ID在df3中。 df2和df3中也有ID,而df1中没有。
编辑:df1中也有一些ID,它们不在df2或df3中。
我想用包含id的数据框中的值填充df1中的列。但是,我不需要所有列(因此我认为合并不适合)。我尝试使用isin函数,但是那样我无法单独更新记录并出现错误。这是我使用isin的尝试:
df1.loc[df1.index.isin(df2.index), 'first_name'] = df2.given_name
是否有一种简便的方法,而无需遍历数据帧以检查索引是否匹配?
答案 0 :(得分:2)
我认为您首先需要rename
列以对齐here中的DataFrame
,然后concat
来按df1.index
和{{1 }}:
df1.columns
编辑:如果仅需要索引的reindex
:
df21 = df2.rename(columns={'given_name':'first_name'})
df31 = df3.rename(columns={'family_name':'surname'})
df = pd.concat([df21, df31]).reindex(index=df1.index, columns=df1.columns)
print (df)
first_name surname state
d
1 John Woods NY
88 Tom Murphy CA
190 Dave Casey KY
2509 Mike Johnson KY