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

Posted

技术标签:

【中文标题】如何选择列并为不存在的列生成 Nan 值?【英文标题】:How to select columns and generate Nan values for non-existing columns? 【发布时间】:2019-08-27 07:53:03 【问题描述】:

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

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

【问题讨论】:

How to add an empty column to a dataframe?的可能重复 【参考方案1】:

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

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 值?的主要内容,如果未能解决你的问题,请参考以下文章

dplyr 中的 mutate_each / summarise_each:如何选择某些列并为变异列赋予新名称?

熊猫使用正则表达式选择列并按值除

将表中的一列替换为不同表中的列并选择 *

如何从多个表中选择列并在 yii 框架中显示

在 jpa 本机查询中选择特定列并映射到 pojo

如何在数据表中动态创建列并为其赋值?