Python 为什么文件行数大于len(数据帧)?

Python 为什么文件行数大于len(数据帧)?,python,pandas,dataframe,Python,Pandas,Dataframe,早上好 我是python和数据分析领域的新手,请耐心听我说。我一直在试图理解为什么在计算文件行时,它给出了正确的答案,但在转换为dataframe并计算len(datafarme)后,它给出了rowcount-1 我相信这很简单,但我在谷歌上搜索了大约两个小时,还没有找到答案,所以请你向我解释一下: import pandas as pd filename = 'amazon_labelled.txt' with open(filename, encoding="utf8"

早上好

我是python和数据分析领域的新手,请耐心听我说。我一直在试图理解为什么在计算文件行时,它给出了正确的答案,但在转换为dataframe并计算len(datafarme)后,它给出了rowcount-1

我相信这很简单,但我在谷歌上搜索了大约两个小时,还没有找到答案,所以请你向我解释一下:

import pandas as pd

filename = 'amazon_labelled.txt'
with open(filename, encoding="utf8") as f:
    row_count = sum(1 for line in f)
print(row_count)  # 1000

csv = pd.read_csv(filename, sep='\t')
df1 = pd.DataFrame(csv)
print(df1.shape[0])  # 999
print(len(df1))  # 999
print(len(df1.index))  # 999
编辑: 似乎在将txt转换为csv文件时,某些行丢失了:

filename = 'imdb_labelled.txt'
with open(filename, encoding="utf8") as f:
    row_count = sum(1 for line in f)
print(row_count)  # 1000

csv = pd.read_csv(filename, sep='\t', header=None)
print(csv.index)  # RangeIndex(start=0, stop=748, step=1)
print(csv)

我现在想知道,这与使用sep='\t'有什么关系吗?

原因是csv的第一行被转换为列,为了避免它并按范围设置列名称使用
header=None
参数:

filename = 'amazon_cells_labelled.txt'
with open(filename, encoding="utf8") as f:
    row_count = sum(1 for line in f)
print(row_count)  # 1000

#first row of csv is first row of data 
df1 = pd.read_csv(filename, sep='\t', header=None)

print(df1.shape[0])  # 1000
print(len(df1))  # 1000
print(len(df1.index))  # 1000
您的代码:

#first row of csv is converted to columns names
df1 = pd.read_csv(filename, sep='\t')
编辑:在下一个文件中使用了
,因此语法分析不正确。为了避免读取以
开头,然后下一行以
结尾,就像一行一样,使用
quoting=3
参数表示
quoting=None

filename = 'imdb_labelled.txt'
with open(filename, encoding="utf8") as f:
    row_count = sum(1 for line in f)
print(row_count)  # 1000

df = pd.read_csv(filename, sep='\t', header=None, quoting=3)
print(len(df.index))  
1000
密码 输出 十, 这是文件行 这是一号线

这是2号线

这是3号线

这是四号线

这是5号线

这是6号线

这是7号线

这是8号线

这是9号线

这是10号线

这是你的cvs文件

这是一号线

这是第二行

这是3号线

这是四号线

3这是5号线

这是6号线

这是7号线

这是8号线

这是9号线

这是10号线


您的枚举方法是错误的

谢谢您,先生,但是当我在另一个文件上测试它时,它不起作用:filename='imdb_labeled.txt',open(filename,encoding=“utf8”)为f:row_count=sum(1代表f中的行)print(row_count)#1000 csv=pd.read_csv(filename,sep='\t',header=None)df=pd.DataFrame(csv)print(df.shape[0])#748打印(len(df))#748打印(len(df.index))#748有什么想法吗?@LeenAli-可以通过
dropbox
gdocs
或simiaar共享csv吗?@LeenAli-我想如果不是机密数据,先生,我从Kaggle那里得到的:谢谢你的帮助,谢谢!@LeenAli-我工作得很好,4次1000次返回。谢谢你,先生,但我没有得到你的答案,也申请了你的code返回这些结果:20==>print(row_count)9==>print(df1.shape[0])9=>print(len(df1))9==>print(len(df1.index))请查看我上面编辑的问题,也许你可以解释一下?@LeenAli我不明白“似乎在将txt转换为csv文件时,有些行丢失了:“我发布的代码打印了数据帧,其中没有遗漏任何一行,谢谢您,先生。”。请看@jezrael的回答,因为它解释了整个事情。非常感谢。
import pandas as pd
f= open("amazon_labelled.txt","w+")
for i in range(10):
     f.write("This is line %d\r\n" % (i+1))
filename = 'amazon_labelled.txt'
with open(filename, encoding="utf8") as f:
    row_count = sum(1 for line in f)
print(row_count)  # 1000

csv = pd.read_csv(filename, sep='\t')
df1 = pd.DataFrame(csv)
#print(df1.shape[0])  # 999
#print(len(df1))  # 999
#print(len(df1.index))  # 999
f1= open("amazon_labelled.txt","r+")
fl = f1.readlines()
print("this is the file lines" )
for i in fl :
  print(i)
print("this is your cvs file ",csv)