当特定列没有值时删除 .csv 的行 python

delete line, of a .csv, when certain column has no value python

我有一个 .csv 文件,我正试图删除一些 rows/lines 没有可用信息的文件。我想删除在某一列中没有值的行。我对编程有点陌生,我找不到办法做到这一点。这可能吗?

如果某行中没有特定数字,我曾尝试删除该行,但效果不佳。

f = open('C:myfile.csv', 'rb')
lines = f.readlines()
f.close()

filename = 'myfile.csv'

f = open(filename, 'wb')
for line in lines:
    if line != "1":
        f.write(line)

f.close()

这里有一些示例行:

0,593   0,250984    -20,523384  -25,406271
0,594   0,250984        
0,595   0,250984        
0,596   0,250984        
0,597   0,250984    -15,793088  -21,286336
0,598   0,250984        
0,599   0,908811        
0,6     0,893612        
0,601   0,784814    -12,130922  -11,825742
0,602   0,909238        
0,603   0,25309     
0,604   0,38435     
0,605   0,602954    -8,316167   -3,43328
0,606   0,642628        
0,607   0,39201     
0,608   0,384289        
0,609   0,251656    -11,825742  -5,874723

所以我想删除第三列和第四列没有数字的行。

您可以使用 Python 的 csv 库来帮助您做到这一点。您的数据似乎是制表符分隔的,因此以下脚本应该有效:

import csv

with open('input.csv', 'rb') as f_input, open('output.csv', 'wb') as f_output:
    csv_output = csv.writer(f_output, delimiter = '\t')

    for row in csv.reader(f_input, delimiter = '\t'):
        if len(row[2]) and len(row[3]):
            csv_output.writerow(row)

给你一个 output.csv 文件包含:

0,593   0,250984    -20,523384  -25,406271
0,597   0,250984    -15,793088  -21,286336
0,601   0,784814    -12,130922  -11,825742
0,605   0,602954    -8,316167   -3,43328
0,609   0,251656    -11,825742  -5,874723

请注意,您的每一行似乎都有 4 列(您的数据有这些缺失条目的选项卡),因此,仅测试长度是 4 是不够的。您需要测试两个单元格的内容。

import csv

fn_in = 'test.csv'
fn_out = 'outfile.csv'

with open(fn_in, 'r') as inp, open(fn_out, 'w') as out:
    writer = csv.writer(out)
    for row in csv.reader(inp):
        if len(row)==4:
            writer.writerow(row)