python - 按列名称的数据框子集列表

标签 python pandas

所以我有一个数据帧列表df_list=[df1,df2,df3]和我感兴趣的列标题列表。col_list=['Fire','Water' ,'风','冰雹']

我想循环遍历每个数据帧 df_list,并创建一个仅包含 col_list 中的列的新数据帧。问题是,如果 col_list 中的元素之一不在 df 中,我仍然希望它创建数据帧,但只是没有该栏。

我尝试做的是,

for data_frame in df_list:
   try:
       data_frame=data_frame[['Fire','Water','Wind','Hail']]
   except:
        continue

但是,这并没有给出我想要的结果。

最佳答案

您应该使用列表理解:

[data_frame[['Fire','Water','Wind','Hail']] for data_frame in df_list]

如果某些 data_frames 没有所有列,您可以使用 reindex相反:

[data_frame.reindex(columns=['Fire','Water','Wind','Hail']) for data_frame in df_list]

for 循环内部:

data_frame=data_frame[['Fire','Water','Wind','Hail']]

正在覆盖 data_frame 变量,但不更新 df_list 的第 i 项。
这相当于以下代码:

In [11]: a = [1, 2, 3]

In [12]: for i in a:
    ...:     i = i + 1
    ...:

In [13]: a
Out[13]: [1, 2, 3]

关于python - 按列名称的数据框子集列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56350333/

相关文章:

python - 解析这些数据的最佳 Pythonic 方式是什么?

python - 如何在 Python 中让我的递归函数返回 0

python - 将数据帧输出到 json 数组

python-3.x - 数据框中哪一行是额外的?

Python Pandas 计算多列的值并根据结果生成图表

python - 如何将python字典转换为pandas中的数据框

python - 如何使用 Travis-CI 运行 Tox

python - django.core.exceptions.ImproperlyConfigured : Field name `id` is not valid for model

python - 使用 ftplib Python 登录 Dropbox

Python numpy : cannot convert datetime64[ns] to datetime64[D] (to use with Numba)