Python 如何选择列并为不存在的列生成Nan值?

Python 如何选择列并为不存在的列生成Nan值?,python,pandas,Python,Pandas,我有一个包含目标列列表的列表: cols = ["col1", "col2", "col4"] 然后我有几个不同列数的数据帧。我必须从cols中选择列。如果数据帧中不存在cols中的一列,则应生成NaN值 df1 = col1 col3 1 x1 2 x2 3 x3 df2 = col1 col2 col4 1 f1 car3 3 f2 car2 4 f5 car1 例如,df2[cols]工作正常,但df1[cols

我有一个包含目标列列表的列表:

cols = ["col1", "col2", "col4"]
然后我有几个不同列数的数据帧。我必须从
cols
中选择列。如果数据帧中不存在
cols
中的一列,则应生成NaN值

df1 =
col1  col3
1     x1
2     x2
3     x3

df2 =
col1  col2  col4
1     f1    car3
3     f2    car2
4     f5    car1
例如,
df2[cols]
工作正常,但
df1[cols]
显然失败了。我需要
df1

df1 =
col1  col2  col3
1     NaN   NaN
2     NaN   NaN
3     NaN   NaN
与列列表一起使用,如果未添加匹配的
NaN
s列:

df1 = df1.reindex(cols, axis=1)
print (df1)
   col1  col2  col4
0     1   NaN   NaN
1     2   NaN   NaN
2     3   NaN   NaN
因此,对于
df2
返回相同的列:

df2 = df2.reindex(cols, axis=1)
print (df2)
   col1 col2  col4
0     1   f1  car3
1     3   f2  car2
2     4   f5  car1
与列列表一起使用,如果未添加匹配的
NaN
s列:

df1 = df1.reindex(cols, axis=1)
print (df1)
   col1  col2  col4
0     1   NaN   NaN
1     2   NaN   NaN
2     3   NaN   NaN
因此,对于
df2
返回相同的列:

df2 = df2.reindex(cols, axis=1)
print (df2)
   col1 col2  col4
0     1   f1  car3
1     3   f2  car2
2     4   f5  car1
可能的重复可能的重复