You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何对齐pandas DataFrame两列 匹配保留原值不匹配填充0

对齐Pandas DataFrame两列的解决方案

实现逻辑

  • 先提取col2列的所有非空有效值存入集合,匹配效率远高于逐行遍历
  • 对col1列的每一个值做匹配判断:如果值在有效值集合中,col2对应位置保留该值,否则填充默认值0
  • 全程使用向量化操作,支持大数据量场景使用

完整实现代码

import pandas as pd

# 构造示例数据(你的真实数据可以直接读取,替换这一步即可)
df = pd.DataFrame(data={
    'col1': [1.91, 2, 3.1, 4, 5, 6, 7.7, 8, 9, 10.8932], 
    'col2': [1.91, 3.1, 6, 7.7, 9, 'NaN', 'NaN', 'NaN', 'NaN','NaN']
})

# 处理col2中的字符串格式NaN,转换为pandas可识别的空值
df['col2'] = pd.to_numeric(df['col2'], errors='coerce')
# 提取col2的非空有效值集合
valid_col2_values = set(df['col2'].dropna())
# 生成对齐后的col2列
df['col2'] = df['col1'].where(df['col1'].isin(valid_col2_values), 0)

# 查看结果
print(df)

运行输出结果

col1  col2
0   1.9100  1.91
1   2.0000  0.00
2   3.1000  3.10
3   4.0000  0.00
4   5.0000  0.00
5   6.0000  6.00
6   7.7000  7.70
7   8.0000  0.00
8   9.0000  9.00
9  10.8932  0.00

注意事项

如果你的数据涉及浮点数,存在精度差异问题(比如col1存储为1.9100000001,col2存储为1.91),可以先对两列做统一精度处理后再匹配,示例如下:

# 统一保留4位小数后再做匹配
df[['col1', 'col2']] = df[['col1', 'col2']].round(4)

内容的提问来源于stack exchange,提问作者user14057357

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 01:45:03