循环遍历数据帧列表并执行操作

时间:2017-05-27 01:13:29

标签: python pandas for-loop dataframe data-manipulation

我有一个数据帧列表,我正在使用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

2 个答案:

答案 0 :(得分:3)

您的assingment sheetnames[i] = ...会将sheetnames列表中的第i个元素替换为sheet[:ixNaN]评估结果。

因此对df1df2df3df4的内容没有影响。

答案 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))