我有如下代码
GU_ES3['Qnd'] = GU_ES3['Qnd,hw_m2'] * GU_ES3['UPOR']
我发现,
GU_ES3['UPOR']
中的某些值为空白。在这种情况下,我想调用其他一些列,例如GU_ES3['NPOR']
,但仅在这种情况下,当GU_ES3['UPOR']
列中的值为0
或NaN
时。你能帮助我吗?
最佳答案
你想要
在一定情况下,一个DataFrame的值将被另一个替换
确保将0或NaN均等地对待
对于(2),您可以将NaN替换为0,对于(1),您可以使用pd.Series.fillna
用NPOR填充UPOR中的NaN,但仅限于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']
)
请注意,例如,使用replace还要替换1、2或3,则只需在代码中使用
.replace(dict.fromkeys([1, 2, 3], np.nan))
。关于python - Pandas 在Python If-then命令上,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50337343/