【发布时间】:2020-06-19 18:42:45
【问题描述】:
晚上好, 我正在编写的代码有问题,我很想得到建议。我想做以下事情:
- 删除 .csv 文件中包含特定值 (-3.4028*10^38) 的行
- 写一个新的.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 > 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