要按日期和城市替换缺失值为另一个数据框中的值,可以使用Pandas库中的merge和fillna函数来实现。以下是一个包含代码示例的解决方法:
import pandas as pd
# 创建第一个数据框
df1 = pd.DataFrame({
'日期': ['2022-01-01', '2022-01-02', '2022-01-03', '2022-01-04'],
'城市': ['上海', '北京', '广州', '深圳'],
'数值': [1, 2, None, 4]
})
# 创建第二个数据框
df2 = pd.DataFrame({
'日期': ['2022-01-01', '2022-01-02', '2022-01-03', '2022-01-04'],
'城市': ['上海', '北京', '广州', '深圳'],
'数值': [10, 20, 30, 40]
})
# 根据日期和城市合并两个数据框
merged_df = df1.merge(df2, on=['日期', '城市'], suffixes=('_原数据框', '_替换数据框'), how='left')
# 使用fillna函数替换缺失值
merged_df['数值_原数据框'] = merged_df['数值_原数据框'].fillna(merged_df['数值_替换数据框'])
# 删除多余的列
merged_df.drop(['数值_替换数据框'], axis=1, inplace=True)
# 输出结果
print(merged_df)
运行上述代码,会输出如下结果:
日期 城市 数值_原数据框
0 2022-01-01 上海 1.0
1 2022-01-02 北京 2.0
2 2022-01-03 广州 30.0
3 2022-01-04 深圳 4.0
以上代码中,首先创建了两个数据框df1和df2,它们包含了日期、城市和数值三列。然后使用merge函数将两个数据框按日期和城市合并成一个新的数据框merged_df。接着使用fillna函数将缺失值替换为另一个数据框中的值。最后删除多余的列,只保留原数据框中的数值列。