如何用Pandas转换CSV格式并对用户角色列去重?
用Pandas实现CSV角色去重合并的简便方法
直接上步骤和代码,解决你遇到的角色重复问题:
导入Pandas并读取CSV
注意原CSV里otto那行字段缺失,需要先修正数据格式,确保ROLE列值正确:import pandas as pd # 读取CSV,自定义列名并跳过表头,适配不规则行 df = pd.read_csv('你的文件路径.csv', sep=';', names=['USER', 'temp_col', 'ROLE'], skiprows=1) # 修正otto行的角色值(该行缺少so字段,角色被误读到temp_col列) df['ROLE'] = df.apply(lambda row: row['temp_col'] if pd.isna(row['ROLE']) else row['ROLE'], axis=1) # 删除临时列 df = df.drop('temp_col', axis=1)分组去重并合并角色
核心逻辑是按用户分组后,对角色列去重再拼接:# 按USER分组,提取去重后的角色并用逗号加空格连接 result_df = df.groupby('USER')['ROLE'].agg(lambda roles: ', '.join(roles.unique())).reset_index() # 重命名列名匹配需求格式 result_df.columns = ['USER', 'ROLES']导出结果
result_df.to_csv('输出文件路径.csv', sep=';', index=False)
这样处理后就能得到目标格式,同一用户的角色只会显示一次。相比字典迭代,Pandas代码更简洁,处理大量数据时效率也更高。
内容的提问来源于stack exchange,提问作者Paul-ET
相关产品推荐
相关产品推荐

