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