2016-10-03 40 views
2

我有一个包含51,347行的数据集。当使用熊猫导入数据并将分隔符设置为“|” ,我输了394排。使用分隔符导入时,大熊猫缺少行=“|”

import pandas as pd 
df = pd.read_csv("Basin11.txt", sep='|', error_bad_lines=False, 
dtype={'Start Date': str, 'Greater Than/Less Than': str, 
'Parameter Code': float, 'Start Time': str, 'Start Depth': float, 'Composite Category': str, 
'Composite Type': str}) 
print(len(df.index)) 

如果删除在SEP变量,数据将不加载为多个列,但将加载的行的适当数量。它似乎只是这个文件的一个问题。 Basin11.txt File

有谁知道我为什么会丢失数据?

+0

我会想象大约394行有“自由”的文字列正在翻译|翻译|翻译,而error_bad_lines = False默默地忽略那些行 – Boud

+0

我试过删除error_bad_lines = False,但它对长度没有影响。除了sep ='|'之外,我们单独删除了每个参数,但没有任何效果。 – Will

回答

2

我开始浏览您的输入文件,发现一些可能导致“缺失行”的错误。

评论行3491和9805有一个开头"但缺少结束"。这会导致匹配问题,包括以下行作为评论主体的一部分。当我开始修复这些问题时,线数开始增加。这可能有更多的情况。

此外,有些行还有用于打开和关闭注释的双引号("")。例如:

“” 绿色,中值潮,10-15英里的风 “”

编辑:我添加以下代码:

for comment in df['Comments'].values: 
    print(comment) 

然后跑python3 sample.py | grep '|' | wc -l,找到包含|,并得到394(你缺少的行数)的评论数

+0

谢谢修复!然后我需要将参数quoting = 3添加到read_csv文件中。 – Will