【问题标题】:delete line, of a .csv, when certain column has no value python当某些列没有值python时,删除.csv的行
【发布时间】:2016-07-12 03:21:55
【问题描述】:

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

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

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、任何示例 python 代码和/或研究标记了你的问题?
  • 请不要将代码放入 cmets - 编辑您的问题并添加它。

标签: python csv row erase


【解决方案1】:

您可以使用 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 是不够的。您需要测试这两个单元格的内容。

【讨论】:

    【解决方案2】:
    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)
    

    【讨论】:

    • 请解释您的代码,以使您的答案对其他人更有帮助。
    猜你喜欢
    • 2020-09-06
    • 2016-05-12
    • 2022-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-24
    • 2019-05-01
    • 1970-01-01
    相关资源
    最近更新 更多