Skip to main content
 首页 » 编程设计

python之Pandas on Python If-then 命令

2025年05月04日23webabcd

我有一个代码如下

GU_ES3['Qnd'] = GU_ES3['Qnd,hw_m2'] * GU_ES3['UPOR'] 

我发现,GU_ES3['UPOR'] 中的某些值是空白的。在这种情况下,我想调用其他专栏,例如GU_ES3['NPOR'],但仅当 GU_ES3['UPOR'] 列中的值为 0 或 NaN 时。

你能帮帮我吗?

请您参考如下方法:

你想

  1. 在特定情况下,一个 DataFrame 的值会被另一个 DataFrame 替换
  2. 确保平等对待 0 或 NaN

对于 (2),您可以将 0 替换为 NaN,对于 (1),您可以使用 pd.Series.fillna 将 UPOR 中的 NaN 填充为 NPOR,但仅限于它是 NaN 的地方。

i = GU_ES3['Qnd,hw_m2'] 
j = GU_ES3['UPOR'].replace(0, np.nan).fillna(GU_ES3['NPOR']) 
GU_ES3['Qnd'] = i * j  

或者,您可以使用 np.where 执行替换:

GU_ES3['Qnd'] = GU_ES3['Qnd,hw_m2'] * np.where( 
    GU_ES3['UPOR'].replace({0 : np.nan}).isna(), GU_ES3['NPOR'], GU_ES3['UPOR'] 
) 

请注意,对于替换,例如,如果您还想替换 1、2 或 3,则只需使用 .replace(dict.fromkeys([1, 2, 3], np .nan)) 在你的代码中。