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

如何基于Volume ID将DataFrame中列表类型列的值替换为另一个DataFrame的列值

解决方法:用字典映射快速替换Volume ID为对应Size

嘿,刚巧我之前也处理过类似的需求,给你分享个简单高效的做法,分两步就能搞定:

1. 先创建Volume ID到Size的映射字典

首先把df2转换成一个以VolumeID为键、size为值的字典,这样查找起来速度超快,尤其是数据量大的时候比用merge或者循环遍历效率高多了:

import pandas as pd

# 先构造你的示例数据(这里我调整了部分ID让它们能匹配上)
df1_data = {
    'instance_id': ['i-0c314bb8d450cvv95', 'i-064e75dvdb8fb8d75', 'i-04a85cb1dccvd895b', 'i-0572cvvdf430d7475', 'i-0fe4cbbfsfgb51c14'],
    'disks': [
        ['vol-08662a47184e0b3b3', 'vol-07a18ce1652ff88f3'],
        ['vol-0f2911a1d0b9a521e', 'vol-0c28d13ada32564da'],
        ['vol-069bf62bf82f32402', 'vol-0424a5deb55024a47'],
        ['vol-0e3b471dcbf0fbd47', 'vol-003d7443d8696a691'],
        ['vol-0bcf2aa4f873cc296', 'vol-03d2a0f318973aaec']
    ]
}
df1 = pd.DataFrame(df1_data)

df2_data = {
    'VolumeID': ['vol-02d8942df26543361', 'vol-0bcf2aa4f873cc296', 'vol-069bf62bf82f32402', 'vol-0424a5deb55024a47', 'vol-0871a4e6f387db693'],
    'instance_id': ['i-0533ae59fgt06cb7a', 'i-0fe4cbbfsfgb51c14', 'i-04a85cb1dccvd895b', 'i-04a85cb1dccvd895b', 'i-0f2ae964gfdgf3caa'],
    'size': [37, 450, 50, 150, 50],
    'type': ['gp3', 'st1', 'gp3', 'st1', 'gp3']
}
df2 = pd.DataFrame(df2_data)

# 创建映射字典
volume_size_map = df2.set_index('VolumeID')['size'].to_dict()

2. 批量替换df1中的Volume ID为Size

接下来用apply函数遍历df1的disks列,把每个列表里的Volume ID替换成对应的Size,最后转成你想要的空格分隔字符串:

# 替换并转成空格分隔的字符串
df1['disks'] = df1['disks'].apply(lambda x: ' '.join(str(volume_size_map.get(vol, 'N/A')) for vol in x))

# 查看最终结果
print(df1)

运行后你会得到类似这样的结果(找不到匹配的Volume ID会显示N/A,你可以改成自己需要的默认值,比如0或者空字符串):

instance_id       disks
0  i-0c314bb8d450cvv95  N/A N/A
1  i-064e75dvdb8fb8d75  N/A N/A
2  i-04a85cb1dccvd895b  50 150
3  i-0572cvvdf430d7475  N/A N/A
4  i-0fe4cbbfsfgb51c14  450 N/A

如果想保留列表形式而不是字符串,只需要把join去掉就行:

df1['disks'] = df1['disks'].apply(lambda x: [volume_size_map.get(vol, 'N/A') for vol in x])

这个方法的好处是简单直接,而且处理大数据集的时候性能也不错,比用merge然后再聚合要高效得多~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.27 16:42:31