在循环中选择数据帧的列

2024-04-25 19:27:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个数据帧列表:

df_list = [df1,df2,df3,df4]

我只想选择其中的一些列,比如:

^{pr2}$

但我想把这个操作变成一个循环

for df in df_list:
      df = df[['column_a','column_e','column_wa']]

但在循环结束时,每个数据帧都有与以前相同的列。在


Tags: 数据indf列表forcolumnlistdf1
3条回答

创建一个不带字段的数据帧副本-不会更改原始数据帧

使用:

del df['column']

从原始数据帧中删除列

编辑 数据帧.drop允许您在一个命令中删除多个列:

^{pr2}$

此方法将就地修改每个原始数据帧。在

cols_retained = ['column_a','column_e','column_wa']
_ = [df.drop([c for c in df if c not in cols_retained], axis='columns', inplace=True) 
     for df in df_list]

[c for c in df if c not in cols_retained]生成该数据帧中不在cols_retained中的所有列的列表。即使其中一个数据帧中没有cols_retained中的所有列,此方法也可以工作(如果不希望这样做,可以很容易地添加一个条件来确保过滤的数据帧每个都有适当数量的列)。在

在每个循环迭代中,df被绑定到一个数据帧。在一个操作(选择一些列)之后,将形成一个新的数据帧,并将df绑定到它。没有任何东西可以修改原始列表。在


不过,这里有一个方法。假设你从这样的事情开始:

dfs = [pd.DataFrame({'a': [1], 'b': [1], 'c': [1], 'd': [1]}) for _ in range(3)]

您可以使用简单的comprehensions来执行您要求的操作:

^{pr2}$

例如,注:

>>> dfs[0]
    a   b
0   1   1

相关问题 更多 >