我有一个有10k行的df1,比如:
name time day details year
xxx 1 mon AA
yyy 2 tue BB
zzz 3 mon CC
我有一个有2k行的df2,比如:
time details year
4 AA 1900
2 BB 2000
5 CC 2030
当df1中的行的时间和细节等于df2中的行时间和细节时,我想要获取df2的年份信息并更新df1。愿望df是这样的:
name time day details year
xxx 1 mon AA
yyy 2 tue BB 2000
zzz 3 mon CC
在"时间"one_answers"细节"上尝试"左"merge
:
import numpy as np
import pandas as pd
df1 = pd.DataFrame({
'name': ['xxx', 'yyy', 'zzz'],
'time': [1, 2, 3],
'day': ['mon', 'tue', 'mon'],
'details': ['AA', 'BB', 'CC'],
'year': [np.nan, np.nan, np.nan]
})
df2 = pd.DataFrame({
'time': [4, 2, 5],
'details': ['AA', 'BB', 'CC'],
'year': [1900, 2000, 2030]
})
merged = df1.drop(columns='year').merge(df2, on=['time', 'details'], how='left')
print(merged)
merged
:
name time day details year
0 xxx 1 mon AA NaN
1 yyy 2 tue BB 2000.0
2 zzz 3 mon CC NaN