我有一个代码如下
GU_ES3['Qnd'] = GU_ES3['Qnd,hw_m2'] * GU_ES3['UPOR']
我发现,GU_ES3['UPOR']
中的某些值是空白的。在这种情况下,我想调用其他专栏,例如GU_ES3['NPOR']
,但仅当 GU_ES3['UPOR']
列中的值为 0
或 NaN 时
。
你能帮帮我吗?
你想
- 在特定情况下,一个 DataFrame 的值会被另一个 DataFrame 替换
- 确保平等对待 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))
在你的代码中。
我是一名优秀的程序员,十分优秀!