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

如何匹配code_file的id行值与data_1列名并合并两个DataFrame?

解决方案

根据你给出的输出示例,我们可以直接通过按行索引拼接的方式得到结果,代码如下:

import pandas as pd

# 构造示例数据(实际使用时替换为你的真实数据)
code_file = pd.DataFrame({
    'id': ['abc.1', 'abc.2', 'inc.type'],
    'codevalue': ['021', '078', '7845'],
    'descr': ['已采取行动', '搜救', '转运']
})

data_1 = pd.DataFrame({
    'state': ['FL', 'FL', 'FL'],
    'inc.type': ['321', '781', '777'],
    'abc.1': ['33', '59', '0154'],
    'abc.2': ['44', '317', '441'],
    'city': ['ORL', 'MIAMI', 'MIAMI']
})

# 按列拼接,将code_file的codevalue和descr列添加到data_1右侧
result = pd.concat([data_1, code_file[['codevalue', 'descr']]], axis=1)

# 调整列顺序以匹配你要的输出格式
result = result[['state', 'inc.type', 'abc.1', 'abc.2', 'city', 'codevalue', 'descr']]

print(result)

不过从你描述的“code_file中id列的数值与data_1的列名相匹配”这个条件来看,可能你的真实需求是要将每个编码列(abc.1、abc.2、inc.type)的编码值与code_file中的描述关联起来。如果是这样,可以先将data_1转为长格式,再与code_file合并,示例代码如下:

# 将data_1转为长格式,提取编码列的信息
melted_data = data_1.melt(
    id_vars=['state', 'city'],
    var_name='id',
    value_name='original_code'
)

# 与code_file合并,关联描述信息
merged_data = pd.merge(melted_data, code_file, on='id')

# 可选:转回宽格式(如果需要保留原列结构)
final_data = pd.merge(merged_data, data_1, on=['state', 'city'])
final_data = final_data[['state', 'inc.type', 'abc.1', 'abc.2', 'city', 'original_code', 'codevalue', 'descr']]

print(final_data)

这段代码会生成包含每个编码列对应描述的长格式结果,你可以根据实际需求选择是否转回宽格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 06:13:13