我有一个数据帧列表,我正在使用for循环在列表上执行操作。 df1,df2,df3和df4是数据帧。在操作之后,我没有在数据帧上找到修改。请帮助我理解我错过了什么以及为什么这不起作用?
我需要进行哪些修改才能将更改传递给源数据帧。
sheetnames = [df1, df2, df3, df4]
i=0
for sheet in sheetnames:
ixNaNList = sheet[sheet.isnull().all(axis=1) == True].index.tolist()
if len(ixNaNList) > 0:
ixNaN = ixNaNList[0]
sheetnames[i]=sheet[:ixNaN]
i=i+1
答案 0 :(得分:3)
您的assingment sheetnames[i] = ...
会将sheetnames
列表中的第i个元素替换为sheet[:ixNaN]
评估结果。
因此对df1
,df2
,df3
或df4
的内容没有影响。
答案 1 :(得分:0)
试试这个:
sheetnames = [df1, df2, df3, df4]
def drop_after_na(df):
return df[df.isnull().all(axis=1).astype(int).cumsum() <= 0]
sheetnames = map(drop_after_na, sheetnames)
试试这个:
sheetnames = ['df1', 'df2', 'df3', 'df4']
for sheet in sheetnames:
exec('{sheet} = {sheet}[{sheet}.isnull().all(axis=1).astype(int).cumsum() <= 0]'.format(sheet=sheet))