【问题标题】:How to fill a column of a dataframe (df1) with info from another dataframe (df2)? Just when two column info matches in df1 and df2?如何用来自另一个数据框(df2)的信息填充数据框(df1)的一列?就在 df1 和 df2 中的两列信息匹配时?
【发布时间】:2021-05-24 16:34:55
【问题描述】:

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

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

【问题讨论】:

    标签: python pandas dataframe csv


    【解决方案1】:

    在“时间”和“详细信息”上尝试“左”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
    

    【讨论】:

      猜你喜欢
      • 2020-09-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多