使用列表理解(Pandas)

时间:2017-07-19 19:32:52

标签: python list pandas dataframe list-comprehension

我有一个具有相同列和不同值的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时,我可以删除列。

我怎样才能在熊猫的列表理解方式中做到这一点?

1 个答案:

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

最后,我强烈建议使用循环。