使用List Comprehension(Pandas)从DataFrame列表中删除DataFrame列

i.n*_*n.m 2 python list-comprehension list dataframe pandas

我有一个DataFrame列表,它们具有相同的列和不同的值.我想从pandas中的一行中的DataFrame列表中删除一些列.

到目前为止,我试过(dfs有数据框列表)

dfs.drop([col for col in ['var1', 'var2'] if col in dfs], axis=1, inplace=True)
Run Code Online (Sandbox Code Playgroud)

dfs[dfs.drop([col for col in ['var1', 'var2'] if col in dfs], axis=1, inplace=True)]
Run Code Online (Sandbox Code Playgroud)

两者都给出了同样的错误:

AttributeError:'list'对象没有属性'drop'

type(dfs)
>> list
Run Code Online (Sandbox Code Playgroud)

但是,当我可以dfs使用for循环从列表中循环遍历每个DataFRame时,我可以删除列.

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

cs9*_*s95 5

假设您要删除['var1', 'var2']列,并且数据框具有相同的列,则应使用for循环.

for df in dfs:
    df.drop(['var1', 'var2'], axis=1, inplace=True)
Run Code Online (Sandbox Code Playgroud)

或者,列表comp exp为:

[df.drop(['var1', 'var2'], axis=1, inplace=True) for df in dfs]
Run Code Online (Sandbox Code Playgroud)

这会返回一个Nones 列表.你也可以用这个:

dfs = [df.drop(['var1', 'var2'], axis=1) for df in dfs]
Run Code Online (Sandbox Code Playgroud)

省略inplace=True将导致df.drop返回新的数据帧,而不是更新inplace并返回None.如果你使用list comps,我会推荐这个.

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