如何对齐DataFrame两列相同项并补全缺失单元格数值
实现方法(Python Pandas)
首先导入依赖库:
import pandas as pd import numpy as np
先构造你给出的原始DataFrame示例:
# 构造原始数据 df = pd.DataFrame({ 'plot1': ['a', 'b', 'c', 'd', 'e'], 'data': [25, 46, 21, 32, 1], 'plot2': ['c', 'e', 'j', np.nan, np.nan], 'data2': [28.0, 18.0, 66.0, np.nan, np.nan], 'data3': [13.0, 12.0, 24.0, np.nan, np.nan] })
然后按以下步骤处理:
- 第一步:提取plot1和plot2的所有非空唯一标识,生成完整的索引列表
all_labels = pd.concat([df['plot1'], df['plot2'].dropna()]).unique() all_labels.sort() # 按字母顺序排序,和你给出的结果顺序一致
- 第二步:处理左半部分(plot1和data列)
left = df[['plot1', 'data']].set_index('plot1').reindex(all_labels, fill_value=0).reset_index() left.columns = ['plot1', 'data']
- 第三步:处理右半部分(plot2、data2、data3列),先剔除plot2为空的行再重索引
right = df[['plot2', 'data2', 'data3']].dropna(subset=['plot2']).set_index('plot2').reindex(all_labels, fill_value=0).reset_index() right.columns = ['plot2', 'data2', 'data3']
- 第四步:按列拼接两个处理好的表,得到最终结果
result = pd.concat([left, right], axis=1)
打印result即可得到你需要的输出,所有缺失值默认填充为0,标识完全对齐。
内容的提问来源于stack exchange,提问作者rezgar
相关产品推荐
相关产品推荐

