如何将Pandas DataFrame中相同元素归类到指定列
实现方法
核心逻辑是先明确元素与目标列的固定对应关系,再逐行提取剩余元素放到最后一列即可,不需要复杂的条件判断或排序操作。
对应规则(根据期望结果整理)
- 列
1固定存放值C - 列
2固定存放值B - 列
3固定存放值A - 列
4固定存放值D - 列
5存放每行中不属于上述4个值的剩余元素
可直接运行的代码
import pandas as pd # 初始化原始数据 info = [["A", "B", "C", "D", "nan"], ["A", "C", "D", "B", "E"], ["C", "D", "A", "B", "K"]] col = ["1", "2", "3", "4", "5"] abc_df = pd.DataFrame(info, columns=col) # 配置列与固定值的映射,后续调整规则只需要修改这个字典 col_value_map = { "1": "C", "2": "B", "3": "A", "4": "D" } fixed_val_set = set(col_value_map.values()) # 构建新数据表 result = pd.DataFrame() # 填充固定值列 for col_name, fixed_val in col_value_map.items(): result[col_name] = [fixed_val] * len(abc_df) # 填充最后一列的剩余值 result["5"] = abc_df.apply( lambda row: [item for item in row if item not in fixed_val_set][0], axis=1 ) print(result)
运行输出
1 2 3 4 5 0 C B A D nan 1 C B A D E 2 C B A D K
如果后续需要调整元素和列的对应关系,直接修改col_value_map的键值对即可;如果某行存在多个非固定值,可根据业务需求调整最后一列的取值逻辑(比如多值拼接、按规则筛选等)。
内容的提问来源于stack exchange,提问作者curiouz
相关产品推荐
相关产品推荐

