我有一个if循环,我正在尝试
(1)从文件路径创建数据帧。你知道吗
(2)格式化此数据帧
(3)将该数据帧添加到作为类实例属性的字典中。你知道吗
下面是我定义类和方法的代码:
class myClass:
def __init__(self, name, filepathlist):
self.name = name
self.filepathlist = filepathlist
def formatData(self):
i = 0
self.dataframeDict = {}
if i < (len(self.filepathlist) - 1):
DFRAW = pd.read_csv(self.filepathlist[i], header = 9) #Row 9 is the row that is not blank (all blank auto-skipped)
DFRAW['DateTime'], DFRAW['dummycol1'] = DFRAW[' ;W;W;W;W'].str.split(';', 1).str
DFRAW['Col1'], DFRAW['dummycol2'] = DFRAW['dummycol1'].str.split(';', 1).str
DFRAW['Col2'], DFRAW['dummycol3'] = DFRAW['dummycol2'].str.split(';', 1).str
DFRAW['Col3'], DFRAW['Col4'] = DFRAW['dummycol3'].str.split(';', 1).str
DFRAW = DFRAW.drop([' ;W;W;W;W', 'dummycol1', 'dummycol2', 'dummycol3'], axis = 1)
dictIndex = self.filepathlist[i][39:44]
self.dataframeDict.update({dictIndex: DFRAW})
i = i + 1
然后创建类的实例并运行方法:
filepathlist = ['filepath1','filepath2']
myINST = myClass('Mydataname', filepathlist)
myINST.formatData()
然后我期望myINST.dataframeDict
根据2个输入文件路径有两个数据帧,因此if循环有2次迭代。但是只有1个存在。你知道吗
我的代码或方法中有什么错误?你知道吗
很难说这是否能完全解决您的问题,因为没有提供虚拟数据。但是,如果用
while i < (len(self.filepathlist) - 1):
替换if i < (len(self.filepathlist) - 1):
,您将离解决方案更近一步。你知道吗您当前正在检查
i=0
是否小于len(self.filepathlist)-1
。如果是,则If块执行一次。实际上,只要i
小于len(self.filepathlist)-1
,就需要一个不断迭代的循环。这是通过while
-循环完成的。你知道吗您需要将条件更改为
for i in range(len(self.filepathlist)):
(另外,删除
i
的赋值,因为for
循环会自动执行。出于同样的原因,还应该删除增加i
的行。你知道吗如果要使用
while
循环,请将if
行更改为while i < len(self.filepathlist):
。你知道吗注意这里没有
-1
。这是因为您正在使用<
而不是<=
。如果您想使用-1
,那么您还需要<=
,因为这将确保循环运行正确的次数。你知道吗相关问题 更多 >
编程相关推荐