如何用Python筛选多列并重写CSV文件?
使用Pandas提取CSV指定列并自定义表头
原始CSV文件结构
code1 code2 code3 name1 name2 sometnig1 something2 14355 12345 54133 part1 part12 aaaaaaaa bbbbbbb 54782 57815 52781 part2 part22 ccccccc ffffffff 14515 52495 52852 part3 part33 ddddddd sssssss
目标CSV文件要求
需要提取指定列并替换为自定义表头,输出如下:
code_1 code_2 name_1 name_2 something_2 14355 12345 part1 part12 bbbbbbb 54782 57815 part2 part22 ffffffff 14515 52495 part3 part33 sssssss
解决方案
选多列的逻辑和单列类似,只是把要保留的列名放进列表即可,另外注意你的原始文件是多空格分隔,读取时要指定分隔符。完整代码如下:
import pandas as pd # 读取原始CSV,用\s+匹配任意数量的空格作为分隔符 df = pd.read_csv("原始文件路径.csv", sep='\s+') # 选择需要的多列:传入原始列名组成的列表 selected_df = df[['code1', 'code2', 'name1', 'name2', 'something2']] # 替换为自定义表头,顺序要和选中的列对应 selected_df.columns = ['code_1', 'code_2', 'name_1', 'name_2', 'something_2'] # 保存为新CSV,用制表符分隔保证对齐,不保留索引列 selected_df.to_csv("新文件路径.csv", sep='\t', index=False)
关键细节说明
sep='\s+':必须指定这个参数,否则Pandas会把整行当成一列(默认按逗号分隔)。- 列选择:列表里的原始列名要和你想保留的字段一一对应,顺序决定了输出列的顺序。
- 表头重命名:直接给
columns属性赋值新列表,确保新表头和选中列的顺序完全匹配。 - 保存格式:如果想要和示例一样的空格对齐效果,用
sep=' '(四个空格)替代sep='\t'也可以。
内容的提问来源于stack exchange,提问作者user19640270
相关产品推荐
相关产品推荐

