如何用txt中的人员ID从CSV提取对应行并修正代码语法错误?
问题解决与代码修正
错误原因分析
- 第4行
wanted_ids = df1[]是无效语法,DataFrame不能用空方括号访问内容,必须指定列或索引。 - 未处理file1.txt中方括号包裹的ID,直接读取会导致ID包含
[或]符号,无法匹配file2中的ID。 - 最终保存时
header=False会丢弃file2的列名,不符合需求。
修正后的完整代码
import pandas as pd # 读取file1.txt,处理方括号并提取ID列表 df1 = pd.read_csv("file1.txt", sep=',', header=None) # 清洗每个ID,去掉首尾的方括号和空格,统一类型 wanted_ids = df1.iloc[:, 0].str.strip('[] ').astype(str) # 根据file2中ID的类型调整,比如改为int # 读取file2.csv df2 = pd.read_csv("file2.csv") # 替换为file2中实际存储人员ID的列名,比如'id'、'user_id'等 id_column_name = 'id' # 筛选出ID匹配的行 wanted_rows = df2[df2[id_column_name].astype(str).isin(wanted_ids)] # 保存结果:保留列名,不保存索引列 wanted_rows.to_csv("file3.csv", index=False, header=True)
关键说明
清洗ID:使用str.strip('[] ')去除每个ID首尾的方括号和空格,确保ID格式和file2中的一致;astype(str)统一类型,避免因类型不匹配(比如数字和字符串)导致的匹配失败。
筛选行:用isin()方法替代直接loc,更适合基于列表的行筛选,必须将id_column_name替换为file2.csv中实际存储人员ID的列名。
保存设置:index=False避免保存额外的索引列,header=True保留file2的原始列名,完全符合需求。
内容的提问来源于stack exchange,提问作者Shourya
相关产品推荐
相关产品推荐

