Pandas DataFrame:如果列为空,则复制该列的内容

ham*_*ice 2 python dataframe pandas

我有以下具有命名列和索引的DataFrame:

  'a'     'a*'    'b'    'b*'
1  5      NaN     9      NaN
2  NaN    3       3      NaN
3  4      NaN     1      NaN
4  NaN    9       NaN    7
Run Code Online (Sandbox Code Playgroud)

数据源导致某些列标题的复制略有不同。例如,如上所述,某些列标题是一个字符串,而某些则是带有附加“ *”字符的相同字符串。

我想从任何值(不为null)复制a*b*ab分别。

有没有一种有效的方法来进行这种操作?

Aks*_*kar 5

使用 np.where

df['a']= np.where(df['a'].isnull(), df['a*'], df['a'])
df['b']= np.where(df['b'].isnull(), df['b*'], df['b'])
Run Code Online (Sandbox Code Playgroud)

输出:

     a  a*  b   b*
0   5.0 NaN 9.0 NaN
1   3.0 3.0 3.0 NaN
2   4.0 NaN 1.0 NaN
3   9.0 9.0 7.0 7.0
Run Code Online (Sandbox Code Playgroud)