所以我有一个数据帧列表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/