带筛选读取CSV文件:如何筛选'M'类型记录到Pandas DataFrame
读取带记录类型标识的CSV并筛选指定类型记录
嘿,这个需求其实挺常见的,我来给你拆解成两步搞定:先把CSV读进Pandas DataFrame,再精准筛选出首字符为'M'的记录就行。分两种情况给你讲,覆盖有表头和无表头的场景:
情况1:CSV文件有表头(第一行是列名)
假设你的CSV长这样(第一行是列名,第一个字段用来标识记录类型):
record_id,product,price
M001,laptop,999
X002,phone,599
M003,tablet,399
对应的代码如下:
import pandas as pd # 1. 读取CSV,默认第一行作为表头 df = pd.read_csv('your_data.csv') # 2. 筛选第一个字段(这里列名叫'record_id')首字符为'M'的记录 # 用str[0]提取每个值的第一个字符,再和'M'做匹配 filtered_df = df[df['record_id'].str[0] == 'M'] # 输出结果看看 print(filtered_df)
情况2:CSV文件没有表头(第一行就是数据)
如果你的CSV没有表头,第一行直接是数据,比如:
M001,laptop,999
X002,phone,599
M003,tablet,399
这时候需要指定header=None让Pandas自动给列分配索引,再通过列索引筛选:
import pandas as pd # 1. 读取无表头CSV,header=None会生成0、1、2...这样的列名 df = pd.read_csv('your_data.csv', header=None) # 2. 筛选第0列(第一个字段)首字符为'M'的记录 filtered_df = df[df[0].str[0] == 'M'] print(filtered_df)
额外注意事项
- 如果第一个字段存在空值,直接用
str[0]会报错,建议先填充空值再筛选:# 处理空值的版本 filtered_df = df[df['record_id'].str[0].fillna('') == 'M'] - 如果你的CSV不是用逗号分隔(比如制表符、分号),记得用
sep参数指定分隔符,比如sep=';'或者sep='\t'。
内容的提问来源于stack exchange,提问作者Martin
相关产品推荐
相关产品推荐

