首页 > 解决方案 > 如何用来自另一个数据框(df2)的信息填充数据框(df1)的一列?就在 df1 和 df2 中的两列信息匹配时?

问题描述

我有一个 df1 有 10k 行,例如:

name  time  day  details  year

xxx    1    mon   AA

yyy    2    tue   BB

zzz    3    mon   CC

我有一个 df2 有 2k 行,例如:

  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

标签: pythonpandasdataframecsv

解决方案


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

推荐阅读