[英]How to skip a line with more values more/less than 6 in a .txt file when importing using Pandas
我有一个 170k 行的 .txt 文件。 我正在将 txt 文件导入熊猫。
每行都有多个用逗号分隔的值。
我想提取具有 9 个值的行。
我目前正在使用:
data = pd.read_csv('uart.txt', sep=",")
您应该尝试的第一件事 - 预处理文件。
import csv
with open('uart.txt', 'r') as inp, open('uart_processed.txt', 'w') as outp:
inp_csv = csv.reader(inp)
outp_csv = csv.writer(outp)
for row in inp_csv:
if len(row) == 9:
outp_csv.writerow(row)
可以有更有效的方法来做到这一点,但它是您可以做的最简单的事情,它会完全删除无效行。
正如@ksooklall 回答的那样,如果为了简单起见,您只需要 2 列:
所以,如果你同意的话 - 继续,不需要预处理。
如果您知道 9 列的名称,则可以执行以下操作:
df = pd.read_csv('uart.txt', names='abcdefghj')
这只会读取前 9 列。
只要你的标题行没问题,
你可以使用data = pd.read_csv('uart.txt', sep=",", error_bad_lines=False, warn_bad_lines=True)
这将忽略具有超过所需数量值的任何行,并且还将显示跳过了哪些此类行。
如果您知道实际数据的其余部分(即具有 9 个值的行)中没有任何缺失值,那么您可以在读dropna
后dropna
以删除所有少于 9 个记录的行。 即( data = pd.read_csv('uart.txt', sep=",", error_bad_lines=False, warn_bad_lines=True).dropna()
但是,如果具有 9 个值的记录可以具有 NA(例如 242,2421,,,,,,,,1)那么我认为 Pandas 中没有内置方式,您必须对csv 在读入之前。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.