如何使用pandas或numpy从CSV文件提取符合条件的指定列并删除冗余列
优先使用pandas实现,操作更简洁,以下是不同场景的可用语法:
场景1:读取CSV时直接筛选列(性能最优,无需加载冗余数据)
如果提前明确要保留的列名,读文件时直接指定usecols参数,无需后续删除操作:
import pandas as pd # 仅加载指定的列 df = pd.read_csv("你的文件路径.csv", usecols=["user_id", "pay_amount", "create_time"])
如果需要先判断列是否符合条件(比如列中存在特定匹配值)再筛选,可先采样判断再加载全量:
# 大文件可先读取前N行采样,判断符合条件的列 sample_df = pd.read_csv("你的文件路径.csv", nrows=100) # 示例条件:筛选所有包含值为"已完成"的列 keep_cols = [col for col in sample_df.columns if "已完成" in sample_df[col].values] # 再次读取全量数据时仅加载符合条件的列 df = pd.read_csv("你的文件路径.csv", usecols=keep_cols)
场景2:已加载全量数据,批量筛选/删除列
如果已经加载了完整的DataFrame,直接通过列列表批量操作即可,无需逐个删除列:
# 示例1:保留列名包含"order"的所有列 df = df.filter(regex="order") # 示例2:保留符合自定义条件的列 keep_cols = [col for col in df.columns if df[col].nunique() > 5] # 仅保留唯一值大于5的列 df = df[keep_cols] # 示例3:批量删除指定冗余列 drop_cols = ["冗余列1", "冗余列2", "冗余列3"] df = df.drop(columns=drop_cols)
numpy处理结构化CSV的逻辑和上述思路一致,但pandas对表格类数据的操作封装更成熟,更推荐使用pandas方案。
内容的提问来源于stack exchange,提问作者Persnickety
相关产品推荐
相关产品推荐

