【问题标题】:Deleting Rows in a .csv File (Python)删除 .csv 文件中的行 (Python)
【发布时间】:2020-06-19 18:42:45
【问题描述】:

晚上好, 我正在编写的代码有问题,我很想得到建议。我想做以下事情:

  1. 删除 .csv 文件中包含特定值 (-3.4028*10^38) 的行
  2. 写一个新的.csv

我正在处理的文件很大(12.2 GB,8700 万行),其中有 6 列,前 5 列是数值,最后一个值包含文本。

这是我的代码:

import csv

directory = "/media/gman/Folder1/processed/test_removal1.csv"
with open('run1.csv', 'r') as fin, open(directory, 'w', newline='') as fout:

# define reader and writer objects
reader = csv.reader(fin, skipinitialspace=False)
writer = csv.writer(fout, delimiter=',')

# write headers
writer.writerow(next(reader))

# iterate and write rows based on condition
for i in reader:
    if (i[-1]) == -3.4028E38:
        writer.writerow(i)

当我运行它时,我收到以下错误消息:

错误:行包含 NUL

File "/media/gman/Aerospace_Classes/Programs/csv_remove.py", line 19, in <module>
for i in reader: Error: line contains NUL 

我不确定如何继续。如果有人有任何建议,请告诉我。谢谢。

【问题讨论】:

  • 请提供完整的错误信息,以及minimal reproducible example
  • 会不会是编码问题?检查这个:stackoverflow.com/a/9882004/1293690
  • 我认为您在这项工作中使用了错误的工具。如果您只想从现有的 CSV 创建一个新的 CSV,减去包含某个子字符串的行,只需执行以下操作:grep -v '-3.4028*10^38' existing_file.csv &gt; new_file.csv
  • 这是完整的错误消息:文件“/media/gman/Aerospace_Classes/Programs/csv_remove.py”,第 19 行,在 for i in reader: Error: line contains NUL跨度>
  • 这能回答你的问题吗? Python CSV error: line contains NULL byte .. 使用Error: line contains NUL 进行更多搜索。

标签: python pandas csv rows reader


【解决方案1】:

我想通了。这是我最终做的:

#IMPORT LIBRARIES
import pandas as pd

#IMPORT FILE PATH
directory = '/media/gman/Grant/Maps/processed_maps/csv_combined.csv'

#CREATE DATAFRAME FROM IMPORTED CSV
data = pd.read_csv(directory)
data.head()
data.drop(data[data.iloc[:,2] < -100000].index, inplace=True) #remove rows that contain altitude values greater than -100,000 meters.
# this is to remove the -3.402823E038 meter altitude values that keep coming up.

#CONVERT PROCESSED DATAFRAME INTO NEW CSV FILE
df = data.to_csv(r'/media/gman/Grant/Maps/processed_maps/corrected_altitude_data.csv') #export good data to this file.

我与 pandas 一起根据逻辑参数删除行,这构成了一个数据框。然后我将数据框导出到 csv 文件中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-05-15
    • 2015-06-25
    • 1970-01-01
    • 1970-01-01
    • 2016-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多