python - 如何用来自另一个数据框(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
解决方案
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
推荐阅读
- javascript - VSCode TypeScript 列表字段名称
- angular - 在内部/使用ngrx效果打开角度materialdDialogs
- c++ - MinGW 将类中对象的第二次声明视为构造函数
- javascript - 使用等式运算符声明变量
- oop - 构建器模式和 LSP
- wordpress - WordPress 仪表板被锁定
- javascript - Visual Studio 中的“JavaScript (V3) 异常”是什么?
- python - 将列表值附加到数组
- c# - C# 如何将 DataTable 添加到 TabPage 控件
- hash - 为什么 crypto.subtle.digest 返回一个空对象