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

时间:2019-04-05 11:59:55

标签: python pandas

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

cols = ["col1", "col2", "col4"]

然后我有几个具有不同列数的pandas DataFrame。我必须从cols中选择列。如果cols中的某一列在DataFrame中不存在,则应生成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

1 个答案:

答案 0 :(得分:2)

DataFrame.reindex与列列表一起使用,如果没有匹配项则添加NaN的列:

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