Python 如何用另一个数据帧(df2)的信息填充数据帧(df1)的一列?当df1和df2中的两列信息匹配时?

Python 如何用另一个数据帧(df2)的信息填充数据帧(df1)的一列?当df1和df2中的两列信息匹配时?,python,pandas,dataframe,csv,Python,Pandas,Dataframe,Csv,我有一个具有10k行的df1,如: name time day details year xxx 1 mon AA yyy 2 tue BB zzz 3 mon CC time details year 4 AA 1900 2 BB 2000 5 CC 2030 我有一个2k行的df2,如: name time day deta

我有一个具有10k行的df1,如:

name  time  day  details  year

xxx    1    mon   AA

yyy    2    tue   BB

zzz    3    mon   CC
  time   details  year
   4      AA       1900

   2      BB       2000

   5      CC       2030
我有一个2k行的df2,如:

name  time  day  details  year

xxx    1    mon   AA

yyy    2    tue   BB

zzz    3    mon   CC
  time   details  year
   4      AA       1900

   2      BB       2000

   5      CC       2030
当df1行的时间和细节等于df2行的时间和细节时,我想要 获取df2的年份信息并更新df1。 愿望是这样的:

name  time  day  details  year
    
xxx    1    mon   AA

yyy    2    tue   BB   2000

zzz    3    mon   CC
在“时间”和“细节”上尝试“左”:

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)
合并

  name  time  day details    year
0  xxx     1  mon      AA     NaN
1  yyy     2  tue      BB  2000.0
2  zzz     3  mon      CC     NaN