如何基于字典键值对为DataFrame新增关联account_id列
解决方案
要实现根据account_number匹配对应account_id并添加新列的需求,只需两步即可完成,操作简单且适合新手:
步骤1:创建快速查找字典
先把你的acc_details列表转换成以account_number为键、account_id为值的字典,这样能快速完成匹配:
acc_lookup = {item['account_number']: item['account_id'] for item in acc_details}
步骤2:为DataFrame添加新列
利用pandas的map()方法,对DataFrame中的account_number列进行映射,不存在的匹配项会自动填充为NaN:
df['account_id'] = df['account_number'].map(acc_lookup)
完整示例
下面是包含测试数据的完整代码,你可以直接运行验证效果:
import pandas as pd # 你的账户详情列表 acc_details = [{"account_number":100, "account_id":32}, {"account_number":32, "account_id":121},{"account_number":232, "account_id":12}, {"account_number":423, "account_id":56}] # 模拟你的DataFrame数据 data = { 'transaction_value': [-2600, -21510, -83460, -2336, -65000, 1000], 'account_number': [6827, 6830, 6825, 32, 423, 100] } df = pd.DataFrame(data) # 创建查找字典 acc_lookup = {item['account_number']: item['account_id'] for item in acc_details} # 添加account_id列 df['account_id'] = df['account_number'].map(acc_lookup) print(df)
运行结果:
transaction_value account_number account_id 0 -2600 6827 NaN 1 -21510 6830 NaN 2 -83460 6825 NaN 3 -2336 32 121.0 4 -65000 423 56.0 5 1000 100 32.0
可以看到,只有在acc_details中存在的account_number才会对应填充account_id,其余项保持为NaN,完全符合你的需求。
内容的提问来源于stack exchange,提问作者chirag
相关产品推荐
相关产品推荐

