CSV源文件中缺少条目

  • 本文关键字:源文件 CSV python csv
  • 更新时间 :
  • 英文 :


我有一个具有715,014个条目的数据集。这是一个工作机密文件,因此我无法上传CSV文件。这是前10行:

ip,ping,主机名,端口

172.20.1.1.1,4 ms,[n/a],[n/s]

172.20.1.2,3 ms,[n/a],[n/s]

172.20.1.3,3 ms,[n/a],[n/s]

172.20.1.4,[n/a],[n/s],[n/s]

172.20.1.5,[n/a],[n/s],[n/s]

172.20.1.6,[n/a],[n/s],[n/s]

172.20.1.7,[n/a],[n/s],[n/s]

172.20.1.8,[n/a],[n/s],[n/s]

172.20.1.9,0 ms,[n/a],[n/s]172.20.1.10,1 MS,d36b3yz1-phth.regis.net,[n/s]

这是我尝试的:

import pandas as pd
import csv
df = pd.read_csv('Userpc.csv',quoting=csv.QUOTE_NONE, error_bad_lines=False)
df.info()

结果:

rangeIndex:1448条目,0至1447

数据列(总4列):

ip 1448非无效对象

ping 1448非无效对象

主机名1448非零对象

端口1447非挂钩对象

dtypes:对象(4)

内存用法:45.3 kb

Pandas如何错过我的大部分数据?当我写入新的.csv文件时,它也仅包含1448行而不是整个700,000行。

感谢您的宝贵时间,对我的问题的任何不良格式感到抱歉!

,而不是猜测熊猫发现不可接受的是什么是仔细审查输入的。阅读每条输入,解析它,更换可能对大熊猫很麻烦的物品,然后暂时存储它们。当您发现无法成功打印的线路以进行检查,然后更改解析器以适应您已确定的新案例。

一些示例:

  • 将IP地址和主机名封闭在双引号标记中;即," 172.20.1.1"one_answers" d36b3yz1-phth.regis.net"。
  • 替换MSEC中给出的ping时间,例如" 4 ms",在这种情况下为4。如果以后发现某些ping时间在分钟范围内,则调整解析器。
  • 用空字符串替换[n/a]的ping时间。
  • 除非有数据在这种情况下将数据包装在双引号标记中。
  • 尝试将空白字符上的每一行分开,以便当您遇到样本中的第十条类似的线时,您将能够检测到两个记录的存在,每条记录都如上所述分别处理。

我会说,将临时记录放在(临时)sqlite3数据库表中,该数据库很容易丢入熊猫。

最新更新