如何用Python基于CSV列中的特定字符串筛选并删除无关数据行
解决方案
1. 准备工作:安装pandas
如果还没安装pandas库,打开命令行执行以下命令:pip install pandas
2. 通用筛选代码实现
下面的代码可以快速筛选出包含指定国家的行,后续只需修改目标国家变量就能适配新的筛选需求:
import pandas as pd # 定义要筛选的目标国家,后续换其他国家直接修改这里即可 target_country = "Japan" # 读取CSV数据集,替换成你实际的文件路径 df = pd.read_csv("your_sales_data.csv") # 筛选Country列包含目标国家的行 # str.contains()会自动匹配逗号分隔的内容,比如"Fiji, Japan, India"这类行都会被选中 # 加上case=False可忽略大小写,适配"japan""JAPAN"这类情况,不需要的话可以删除该参数 filtered_df = df[df["Country"].str.contains(target_country, case=False)] # 将筛选后的结果保存为新CSV,index=False避免生成多余的索引列 filtered_df.to_csv("filtered_sales_data.csv", index=False)
3. 代码关键部分解释
pd.read_csv():读取指定路径的CSV文件,替换成你的数据集路径即可。df["Country"].str.contains(target_country):逐行检查Country列的字符串是否包含目标国家,返回布尔值序列,用这个序列就能筛选出符合条件的行。to_csv(index=False):保存结果时不写入pandas自动生成的索引列,保证输出的CSV格式和原数据一致。
4. 大型CSV的优化方案(可选)
如果你的数据集特别大,一次性加载会占用过多内存,可以用分块读取的方式处理:
import pandas as pd target_country = "Japan" chunk_size = 10000 # 每次读取1万行,可根据你的内存情况调整 # 初始化空DataFrame存储筛选结果 filtered_df = pd.DataFrame() # 分块读取并筛选 for chunk in pd.read_csv("your_sales_data.csv", chunksize=chunk_size): chunk_filtered = chunk[chunk["Country"].str.contains(target_country, case=False)] filtered_df = pd.concat([filtered_df, chunk_filtered]) # 保存最终结果 filtered_df.to_csv("filtered_sales_data.csv", index=False)
内容的提问来源于stack exchange,提问作者Naman Jain
相关产品推荐
相关产品推荐

