最快是使用map
:
df1['value2'] = df1['id'].map(df2.set_index('id')['value2'])
print (df1)
id id2 value value2
0 1 1 a e
1 1 2 b e
2 2 1 c g
3 3 1 d h
編輯:
print (df2)
id value2
0 1 e
1 1 p
2 2 g
3 3 h
df1['value2'] = df1['id'].map(df2.set_index('id')['value2'])
print (df1)
InvalidIndexError: Reindexing only valid with uniquely valued Index objects
答溶液是刪除它們:與重複值
print (df2)
id value2
0 1 e
1 1 p
2 2 g
3 3 h
df2 = df2.drop_duplicates(subset='id')
print (df2)
id value2
0 1 e
2 2 g
3 3 h
df1['value2'] = df1['id'].map(df2.set_index('id')['value2'])
print (df1)
id id2 value value2
0 1 1 a e
1 1 2 b e
2 2 1 c g
3 3 1 d h
解和左連接:
df = pd.merge(df1, df2, on='id', how='left')
print (df)
id id2 value value2
0 1 1 a e
1 1 1 a p
2 1 2 b e
3 1 2 b p
4 2 1 c g
5 3 1 d h
我得到以下錯誤:重新索引只有唯一價值指數的有效對象 –
這意味着表2是重複的。 – jezrael
是的,有重複的索引,我需要的是在這種情況下值重複。 –