如何用Pandas筛选包含Fastenal子串的行并保留对应序列号
筛选CSV中Assignees_y列包含Fastenal子串的行
下面给你两种实现方式,选顺手的来用:
方法一:用pandas(简洁高效,推荐新手)
如果还没装pandas,先在终端里执行:
pip install pandas
然后写代码:
import pandas as pd # 读取CSV,只加载需要的两列,节省内存 df = pd.read_csv("你的文件名.csv", usecols=["Assignees_y", "Serials"]) # 筛选Assignees_y列包含"Fastenal"的行 filtered_df = df[df["Assignees_y"].str.contains("Fastenal", na=False)] # 输出筛选后的数据 print(filtered_df) # 如果要保存成新的CSV文件,就加这句 # filtered_df.to_csv("筛选后的文件.csv", index=False)
注意:na=False是为了跳过空值避免报错,要是你的列里没有空值可以去掉
方法二:用Python内置csv模块(无需额外装库)
不想用第三方库的话,用自带的csv模块也能实现:
import csv # 打开原文件和要写入的文件(如果要保存结果的话) with open("你的文件名.csv", "r", newline="", encoding="utf-8") as infile, \ open("筛选后的文件.csv", "w", newline="", encoding="utf-8") as outfile: reader = csv.DictReader(infile) writer = csv.DictWriter(outfile, fieldnames=["Assignees_y", "Serials"]) # 写入表头 writer.writeheader() # 逐行筛选 for row in reader: # 检查Assignees_y列是否包含Fastenal,同时处理空值情况 if row["Assignees_y"] and "Fastenal" in row["Assignees_y"]: writer.writerow(row) # 如果只是想打印结果,就用print(row)代替writer.writerow(row)
内容的提问来源于stack exchange,提问作者Ethan
相关产品推荐
相关产品推荐

