我有多个数据帧,我想在其上运行此函数,该函数主要从数据帧中删除不必要的列并返回一个数据帧:
def dropunnamednancols(df):
"""
Drop any columns staring with unnamed and NaN
Args:
df ([dataframe]): dataframe of which columns to be dropped
"""
#first drop nan columns
df = df.loc[:, df.columns.notnull()]
#then search for columns with unnamed
df = df.loc[:, ~df.columns.str.contains('^Unnamed')]
return df
现在我遍历数据帧列表:[df1,df2,df3]
dfsublist = [df1, df2, df3]
for index in enumerate(dfsublist):
dfsublist[index] = dropunnamednancols(dfsublist[index])
虽然dfsublist的项目已更改,但原始数据帧df1、df2、df3仍保留不必要的列。我怎样才能做到这一点
如果我理解正确,您希望将一个函数分别应用于多个数据帧
基线问题是,在函数中,您返回一个新的数据帧,并用新的数据帧替换列表中存储的数据帧,而不是修改旧的原始数据帧
如果要修改原始值,必须使用函数的
inplace=True
参数。这是可能的,但不推荐,如here所示因此,您的代码可能如下所示:
作为示例数据:
原因可能是您使用的枚举错误。在您的情况下,您只需要索引,因此您应该做的是:
Enumerate返回索引的元组和列表中的实际值。因此,在您的代码中,循环变量索引实际上将被指定为:
因此,您可以正确使用enumerate并解压缩元组:
或者,您完全放弃它,因为您可以通过任何一种方式使用索引访问值
相关问题 更多 >
编程相关推荐