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时,我可以删除列.
我怎么能在熊猫的列表理解方式中做到这一点?
假设您要删除['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,我会推荐这个.
最后,我强烈建议使用循环.
| 归档时间: |
|
| 查看次数: |
1037 次 |
| 最近记录: |