如何使用Pandas根据首个code_status元素映射生成Product列?
实现方法(以Python Pandas为例)
核心思路是先把第一个数据集转换成code到产品的映射字典,再提取第二个数据集里每个code列表的首个元素,通过字典匹配得到对应的产品。
步骤1:构建code与Product的映射字典
先把第一个数据集转成字典,这样查询匹配的效率更高:
import pandas as pd # 假设第一个数据集是df1(实际使用时替换成你的数据读取方式,比如pd.read_csv) data1 = { 'code_status': [5342, 4231, 5227, 6232, 7342], 'Product': ['Home Product', 'Appliance Product', 'Home Product', 'Furniture Product', 'Electronic Product'] } df1 = pd.DataFrame(data1) # 生成code到Product的映射字典 code_product_map = df1.set_index('code_status')['Product'].to_dict()
步骤2:处理第二个数据集,提取首个code并映射
针对第二个数据集,先取出每个code列表的第一个元素,再用字典映射出对应的Product:
# 假设第二个数据集是df2(实际替换成你的数据读取方式) data2 = { 'unique_id': ['asd6767s', 'hfed44hh', 'dffd4f3g', '3hbh333y'], 'code_status': [[6232,5598], [4534,6344,2337,2344], [5343,6667,2563], [7454,2323,8855,2066]] } df2 = pd.DataFrame(data2) # 提取每个code列表的首个元素,并用字典映射Product;找不到匹配项时返回'Unknown Product' df2['Product'] = df2['code_status'].apply(lambda x: code_product_map.get(x[0], 'Unknown Product'))
运行结果示例
执行上述代码后,df2会新增Product列,输出如下:
unique_id code_status Product 0 asd6767s [6232, 5598] Furniture Product 1 hfed44hh [4534, 6344, 2337, 2344] Unknown Product 2 dffd4f3g [5343, 6667, 2563] Unknown Product 3 3hbh333y [7454, 2323, 8855, 2066] Unknown Product
注意事项
- 如果你的第二个数据集中
code_status是字符串格式(比如"[6232,5598]"),需要先把字符串转成列表,再提取首个元素,比如用ast.literal_eval处理:import ast df2['code_status'] = df2['code_status'].apply(ast.literal_eval) - 确保两个数据集中
code_status的类型一致(比如都是整数),如果第二个数据集里的code是字符串,要先转成整数再映射。
内容的提问来源于stack exchange,提问作者Patrik
相关产品推荐
相关产品推荐

