如何将dataframe中行业代码的缺失值根据同一证券代码中上一年的行业代码来填充
时间: 2024-11-13 07:25:30 浏览: 12
在Python的pandas库中,你可以使用`fillna()`函数结合条件查询来解决这个问题。假设你的DataFrame有两个列,一个是`security_code`(证券代码),另一个是`industry_code`(行业代码)。以下是一种方法:
```python
# 假设df是你的DataFrame,且已经包含了`security_code`和`industry_code`列
# 首先,创建一个新的数据集或者使用一个副本来保存上一年的数据
last_year_data = df[df['year'] == df['year'].min() - 1].copy()
# 确保`industry_code`列在两个数据集中都有
assert 'industry_code' in last_year_data.columns and 'industry_code' in df.columns
# 使用`merge`函数基于`security_code`连接当前年份和上一年的数据
merged_df = pd.merge(df, last_year_data, on='security_code', suffixes=('', '_last_year'))
# 现在,我们可以用上一年的数据填充当前年的缺失值
filled_df = merged_df.fillna({'industry_code': merged_df['industry_code_last_year']})
# 如果`industry_code`在上一年也有缺失值,可以考虑其他的填充策略,比如使用众数、中位数或固定值
# filled_df = filled_df.fillna(filled_df['industry_code'].mode().iloc[0]) # 使用众数填充
# 删除上一年的数据列
filled_df.drop(columns=['industry_code_last_year'], inplace=True)
# 最终结果就是填充了缺失值的DataFrame
```
阅读全文