Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
移除列+;使用python在多个大型.csv文件中保留某些行_Python_Csv - Fatal编程技术网

移除列+;使用python在多个大型.csv文件中保留某些行

移除列+;使用python在多个大型.csv文件中保留某些行,python,csv,Python,Csv,你好,我在这里和python世界都是新手 我有一些(~1000).csv文件,每个文件包含约1800000行信息。这些文件的格式如下: 5302730,131841,-0.29999999999999999,NULL,2013-12-31 22:00:46.773 5303072,188420,28.199999999999999,NULL,2013-12-31 22:27:46.863 5350066,131841,0.29999999999999999,NULL,2014-01-01 00:

你好,我在这里和python世界都是新手

我有一些(~1000).csv文件,每个文件包含约1800000行信息。这些文件的格式如下:

5302730,131841,-0.29999999999999999,NULL,2013-12-31 22:00:46.773
5303072,188420,28.199999999999999,NULL,2013-12-31 22:27:46.863
5350066,131841,0.29999999999999999,NULL,2014-01-01 00:37:21.023
5385220,-268368577,4.5,NULL,2014-01-01 03:12:14.163
5305752,-268368587,5.1900000000000004,NULL,2014-01-01 03:11:55.207
因此,我希望所有文件: (1) 删除第4列(空)的步骤 (2) 在每个文件中仅保留某些行(取决于第一列的值,即5302730,仅保留包含该值的行)

我不知道这是否可能,所以任何答案都是感激的

提前谢谢。

看一下

可以使用
csv.reader
函数生成行迭代器,每行单元格作为一个列表

for line in csv.reader(open("filename.csv")):
    # Remove 4th column, remember python starts counting at 0
    line = line[:3] + line[4:]
    if line[0] == "thevalueforthefirstcolumn":
         dosomethingwith(line)

如果您希望不止一次对CSV文件执行此类操作,并且希望使用不同的参数,包括要跳过的列、要用作键的列以及要筛选的内容,您可以使用以下方法:

import csv

def read_csv(filename, column_to_skip=None, key_column=0, key_filter=None):

    data_from_csv = []

    with open(filename) as csvfile:
        csv_reader = csv.reader(csvfile)

        for row in csv_reader:

            # Skip data in specific column
            if column_to_skip is not None:
                del row[column_to_skip]

            # Filter out rows where the key doesn't match
            if key_filter is not None:
                key = row[key_column]
                if key_filter != key:
                    continue

            data_from_csv.append(row)

    return data_from_csv

def write_csv(filename, data_to_write):

    with open(filename, 'w') as csvfile:
        csv_writer = csv.writer(csvfile)

        for row in data_to_write:
            csv_writer.writerow(row)

data = read_csv('data.csv', column_to_skip=3, key_filter='5302730')
write_csv('data2.csv', data)

因此,我得到了一个没有第四列的新文件,它是这样使用的:import csv with open('20140101.csv',“r”)作为file_in:with open('test.csv',“w”)作为file_out:writer=csv.writer(file_out)for line in csv.reader(file_in):line=line[:3]+line[4:]writer.writerow(line)抱歉最后的评论。因此,我得到了一个没有第4列的新文件,它是这样使用的:
import csv with open('original20140101.csv',“r”)作为file_in:with open('20140101.csv',“w”)作为file_out:writer=csv.writer(file_out)for line in csv.reader(file_in):line=line[:3]+line[4:]writer.writerow(line)
如果20140101指的是01-01-2015(日期),而我所有的文件都有这种格式,我如何制作循环更改文件(输入+输出)?您可以使用for循环覆盖日期,并使用
infle=“original{}.csv”。format(日期)
outfile=“{}.csv”。format(日期)
谢谢我制作了它!再次感谢@pangeras,如果此答案包含您正在寻找的答案,请将其标记为已接受。谢谢。第四列的所有列都是空的吗?如果是这样的话,你可以进行查找和替换。我会使用pandas。Pandas会将每个csv文件作为类似表格的对象加载。然后可以删除一列。然后使用逻辑运算符选择列1中的行。