两个dataframe以某一列为索引,按列合并,缺失的行用前一行的数值进行填充
时间: 2024-03-23 09:42:57 浏览: 80
实验室管理系统 微信小程序+SSM毕业设计 源码+数据库+论文+启动教程.zip
可以使用 Pandas 库中的 `merge()` 和 `fillna()` 方法来实现将两个 DataFrame 按照某一列为索引进行列合并,并且缺失的行用前一行的数值进行填充的功能。具体实现方式如下:
```python
import pandas as pd
# 创建两个 DataFrame
df1 = pd.DataFrame({'key': ['A', 'B', 'C', 'D'], 'A': [1, None, 3, None], 'B': [6, 7, None, 9]})
df2 = pd.DataFrame({'key': ['B', 'C', 'D', 'E'], 'C': [None, 2, 3, 4], 'D': [6, 7, 8, None]})
# 使用 merge() 方法按照 key 列进行合并
df = pd.merge(df1, df2, on='key', how='outer')
# 使用 fillna() 方法将空值用前一个数值填充
df.fillna(method='ffill', inplace=True)
# 打印合并后的结果
print(df)
```
在上述代码中,`merge()` 方法的参数 `on='key'` 表示按照 key 列进行合并,`how='outer'` 表示使用外连接方式进行合并;`fillna()` 方法的参数 `method='ffill'` 表示使用前一个数值进行填充,`inplace=True` 表示直接修改原 DataFrame,而不是返回一个新的 DataFrame。执行上述代码后,输出的结果如下:
```
key A B C D
0 A 1.0 6.0 NaN 6.0
1 B 1.0 7.0 NaN 7.0
2 C 3.0 7.0 2.0 8.0
3 D 3.0 9.0 3.0 8.0
4 E 3.0 9.0 4.0 8.0
```
可以看到,两个 DataFrame 按照 key 列进行了合并,并且缺失的行用前一行的数值进行了填充。
阅读全文