如何在Pandas中合并DataFrame并为缺失行填充0?
解决方案
可以通过 pandas 的 merge 方法结合列重命名、缺失值填充来实现需求,具体步骤如下:
1. 构建示例数据
首先根据你提供的结构创建两个 DataFrame:
import pandas as pd df1 = pd.DataFrame({ 'left': ['a', 'b', 'c', 'd'], 'center': [0.1, 0.2, 0.1, 0.3], 'right': ['Tee', 'The', 'Three', 'ee'] }) df2 = pd.DataFrame({ 'left': ['a', 'c', 'b'], 'center': [0.4, 0.7, 0.5] })
2. 重命名列避免冲突
将 df2 中的 center 列重命名为 center2,防止合并后列名重复:
df2_renamed = df2.rename(columns={'center': 'center2'})
3. 左连接合并数据
以 left 列为连接键,使用左连接保留 df1 的所有行,同时匹配 df2_renamed 中的对应数据:
merged_df = pd.merge(df1, df2_renamed, on='left', how='left')
4. 填充缺失值为0
将合并后 center2 列的缺失值填充为0:
merged_df['center2'] = merged_df['center2'].fillna(0)
最终结果
执行上述代码后,merged_df 的结构与你期望的完全一致:
| left | center | center2 | right |
|---|---|---|---|
| a | 0.1 | 0.4 | Tee |
| b | 0.2 | 0.5 | The |
| c | 0.1 | 0.7 | Three |
| d | 0.3 | 0.0 | ee |
内容的提问来源于stack exchange,提问作者van dam
相关产品推荐
相关产品推荐

