在Pandas中,如果遇到某个数据框的'行业代码'列存在缺失值,而该行对应的证券代码与上一年度的数据有匹配的行业代码可用,应该如何使用这些已有的历史数据来填充当前的缺失值?
时间: 2024-12-13 11:20:33 浏览: 3
在Pandas中处理这种场景,可以采用数据连接(merge或join)的方法,结合条件操作来填充缺失值。假设你有两个DataFrame,一个是`df_current`,包含当前年度的数据,其中有些'行业代码'(column名为'industry_code')缺失;另一个是`df_history`,包含过去几年的历史数据,包括完整的行业代码。
首先,你需要确定两个DataFrame之间的关联键,这里是'证券代码'(假设列名为'security_code')。然后,你可以尝试通过`left_join`或者`merge`函数将它们按照这个键合并:
```python
# 假设df_history有一个额外的列'time_year'表示数据所属的时间年份
df_filled = pd.merge(df_current, df_history[['security_code', 'industry_code', 'time_year']],
on='security_code', how='left', suffixes=('', '_y'))
# 如果当前年份的数据在历史上能找到,则填充缺失值
df_filled['industry_code'] = df_filled.apply(lambda row: row['industry_code_y'] if pd.isnull(row['industry_code']) else row['industry_code'], axis=1)
# 现在df_filled中'industry_code'的缺失值已经被历史数据填充了
```
在这个过程中,`how='left'`表示保留左表的所有记录,即`df_current`中的所有数据,如果有匹配的历史数据就填充,否则保持缺失。
阅读全文