我有一个具有相同列和不同值的DataFrame列表。我想从pandas中的一行中的DataFrame列表中删除一些列。
到目前为止,我尝试过(dfs
有数据框列表)
dfs.drop([col for col in ['var1', 'var2'] if col in dfs], axis=1, inplace=True)
和
dfs[dfs.drop([col for col in ['var1', 'var2'] if col in dfs], axis=1, inplace=True)]
两者都给出了同样的错误:
AttributeError:' list'对象没有属性' drop'
type(dfs)
>> list
但是,当我可以使用dfs
循环从列表for
循环遍历每个DataFRame时,我可以删除列。
我怎样才能在熊猫的列表理解方式中做到这一点?
答案 0 :(得分:5)
假设您要删除['var1', 'var2']
列,并且数据框具有相同的列,则应使用for
循环。
for df in dfs:
df.drop(['var1', 'var2'], axis=1, inplace=True)
或者,列表comp exp为:
[df.drop(['var1', 'var2'], axis=1, inplace=True) for df in dfs]
这将返回None
的列表。你也可以用这个:
dfs = [df.drop(['var1', 'var2'], axis=1) for df in dfs]
省略inplace=True
会导致df.drop
返回新的数据框,而不是更新inplace并返回None。我推荐这个 if 你正在使用list comps。
最后,我强烈建议使用循环。