python - 从 csv 文件中删除不需要的值的快速、准确、可靠的方法

标签 python csv data-processing

我有一个很大的 csv 文件,其中包含大量脏数据,我想通过消除所有不是绝对必要的值来稍微清理一下它。

Here是我正在谈论的文件。

它有以下组件:

网站,标题,开始日期,开始日期,雇主,地点,纬度, lon,国家,Skills11,工作

但我想抹去除:

雇主,地点,国家,工作

是否有特别适合这项任务的特定工具?

或者也许有人有一个方便的 Python 脚本可以完成这项工作?

最佳答案

你可以很容易地用 python 写入一个临时文件然后替换原来的文件。

import  csv
from operator import itemgetter
from tempfile import NamedTemporaryFile
from shutil import move

with open("edsa_data.csv") as f, NamedTemporaryFile(dir=".", delete=False) as tmp:
    # itertools.imap python2
    csv.writer(tmp).writerows(map(itemgetter(3, 5, 7, 9), csv.reader(f)))
move(tmp.name, "edsa_data.csv")

对于更通用的方法:

import csv
from operator import itemgetter
from tempfile import NamedTemporaryFile
from shutil import move




def keep_columns(csv_f, keep_cols, **kwargs):
    with open(csv_f) as f, NamedTemporaryFile("w", dir=".", delete=False) as tmp:
        csv.writer(tmp, **kwargs).writerows(itemgetter(*keep_cols)(row) 
                                            for row in csv.reader(f, **kwargs))
    move(tmp.name, csv_f)


keep_columns("edsa_data.csv", (3, 4, 7, 9))

对于 kwargs,您可以传递 sep="," skipinitialspace=True 等。

关于python - 从 csv 文件中删除不需要的值的快速、准确、可靠的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36851741/

相关文章:

python - Pygame -> 在类方法中移动一个矩形

内置 "in"算子的Python源码

c# - 如何使用 CSVHelper 编写非平面类的 header ?

c++ - 将浮点值写入 .csv 文件

makefile - 用于 linux 的免费安全分布式 make 系统

python - 检查目标时出现 Keras ValueError

python - 无法对 Pandas 数据框进行子集化

python - 如何在 python 中的 pandas 中对 groupby 结果执行函数?

python - 如何使用 Scikit-learn Standard Scaler 对时间序列数据进行标准化?

c - 如何从 c 文件中读取特定数据列