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*列a和b分别。
有没有一种有效的方法来进行这种操作?
使用 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)