我有如下代码

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


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

你能帮助我吗?

最佳答案

你想要


在一定情况下,一个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/

10-14 18:23
查看更多