Pandas:选择列,如果不存在则默认

ste*_*esu 3 python dataframe pandas

假设我有以下数据框:

>>> df
     val1 val2 val3
key
  1     1    1    1
  2     2    2    2
  3     3    3    3
Run Code Online (Sandbox Code Playgroud)

现在我想选择列val1val2和 (这是关键:)val4

>>> df[["val1", "val2", "val4"]]
KeyError: "['val4'] not in index"
Run Code Online (Sandbox Code Playgroud)

我想要什么:

>>> df.something(something)
     val1 val2 val4
key
  1     1    1  NaN
  2     2    2  NaN
  3     3    3  NaN
Run Code Online (Sandbox Code Playgroud)

WeN*_*Ben 5

国际大学学院reindex

df.reindex(columns=["val1", "val2", "val4"])
Out[431]: 
     val1  val2  val4
key                  
1       1     1   NaN
2       2     2   NaN
3       3     3   NaN
Run Code Online (Sandbox Code Playgroud)

.loc可以这样做,但会引发警告:将 list-likes 传递给 .loc 或带有任何缺失标签的 [] 将来会引发 KeyError,您可以使用 .reindex() 作为替代方案。

df.loc[:,["val1", "val2", "val4"]]
Run Code Online (Sandbox Code Playgroud)