Python 简单While循环语法错误
我刚刚开始试验Python来完成我的论文。我想导入一个巨大的csv文件,所以我决定将其按较小的部分导入,同时浏览有意义的数据。要导入的csv为20GB,下面是我提供的函数:Python 简单While循环语法错误,python,while-loop,syntax,Python,While Loop,Syntax,我刚刚开始试验Python来完成我的论文。我想导入一个巨大的csv文件,所以我决定将其按较小的部分导入,同时浏览有意义的数据。要导入的csv为20GB,下面是我提供的函数: """importing 10e6 rows at the time...with 10e7 rows python crashes""" import pandas as pd import numpy as np def screma_dati(file): i=1000000 print("\n...
"""importing 10e6 rows at the time...with 10e7 rows python crashes"""
import pandas as pd
import numpy as np
def screma_dati(file):
i=1000000
print("\n...begin skimming...")
#first reading
data_values=pd.read_csv(file,nrows=i)
print("\n\t Dataset:\t"+file)
print("\n\t part n: 1")
#further readings
length_rows=i
j=i
while length_rows = i
except KeyboardInterrupt:
data=pd.read_csv(file,header=None,nrows=i,skiprow=j)
shp=np.shape(data)
length_rows=shp[0]
idx=data.loc[data["mbaddr"].isin(np_cod)]#np_cod are reference code
data_values.append(idx)
j+=i
print("\n\t part n: " +str(j/i))
print("\n...end skimming...")
return data_values
它在编译时给了我语法错误,即使这可能是一个平庸的错误,我也不知道如何解决它。
最近我刚开始使用python,所以函数可能没有更多的错误
PS[offtopic]:这是导入如此大的数据集的好方法吗
while length_rows == i:
pass
此外,您的except缺少“尝试”
您的语法错误发生在您的条件之后,而它应该如下所示。并且您错误地使用了除之外的。您可能应该使用try,而不是except
while length_rows = i:
try:
data=pd.read_csv(file,header=None,nrows=i,skiprow=j)
shp=np.shape(data)
length_rows=shp[0]
idx=data.loc[data["mbaddr"].isin(np_cod)]#np_cod are reference code
data_values.append(idx)
j+=i
print("\n\t part n: " +str(j/i))
except KeyboardInterupt:
raise # or just simple pass
print("\n...end skimming...")
return data_values
希望这能解决您的问题…while循环中缺少冒号。除此之外,需要先尝试一下。需要在except.offtopic之后缩进代码:您应该尝试逐行或逐块解析文件。大致思路如下:我在while条件之后添加了冒号,但仍然没有调试。你能仔细检查一下正确的空格(制表符和空格)吗。您可以在文本编辑器或winword中使用视图空白功能
while length_rows = i:
try:
data=pd.read_csv(file,header=None,nrows=i,skiprow=j)
shp=np.shape(data)
length_rows=shp[0]
idx=data.loc[data["mbaddr"].isin(np_cod)]#np_cod are reference code
data_values.append(idx)
j+=i
print("\n\t part n: " +str(j/i))
except KeyboardInterupt:
raise # or just simple pass
print("\n...end skimming...")
return data_values