csv.reader和pandas的区别-python

kev*_*vin 2 python pandas

我正在使用csv.reader和pandas导入一个csv文件。但是,来自同一文件的行数是不同的。

reviews = []
openfile = open("reviews.csv", 'rb')
r = csv.reader(openfile)
for i in r:
    reviews.append(i)
openfile.close()
print len(reviews)
Run Code Online (Sandbox Code Playgroud)

结果是10,000(这是正确的值)。但是,熊猫返回不同的值。

df = pd.read_csv("reviews.csv", header=None)
df.info()
Run Code Online (Sandbox Code Playgroud)

这将返回9,985

有谁知道为什么两种导入数据方法之间有区别?

我只是试过这个:

reviews_df = pd.DataFrame(reviews)
reviews_df.info()
Run Code Online (Sandbox Code Playgroud)

这将返回10,000。

Abb*_*bas 5

请参考pandas.read_csv那里有一个名为的参数skip_blank_linesTrue因此,除非您将其设置为默认值,否则它的默认值False将不会读取空白行。

考虑下面的示例,有两个空白行:

A,B,C,D
0.07,-0.71,1.42,-0.37

0.08,0.36,0.99,0.11
1.06,1.55,-0.93,-0.90
-0.33,0.13,-0.11,0.89
1.91,-0.74,0.69,0.83
-0.28,0.14,1.28,-0.40
0.35,1.75,-1.10,1.23

-0.09,0.32,0.91,-0.08
Run Code Online (Sandbox Code Playgroud)

使用skip_blank_lines = False读取它:

df = pd.read_csv('test_data.csv', skip_blank_lines=False)
len(df)
10 
Run Code Online (Sandbox Code Playgroud)

使用skip_blank_lines = True读取它:

  df = pd.read_csv('test_data.csv', skip_blank_lines=True)
  len(df)
  8
Run Code Online (Sandbox Code Playgroud)