当特定列没有值时删除 .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)
我有一个 .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)