2024-04-26 06:55:35 发布
网友
我有一个代码如下
GU_ES3['Qnd'] = GU_ES3['Qnd,hw_m2'] * GU_ES3['UPOR']
我发现,GU_ES3['UPOR']中的一些值是空的。在这个场景中,我想调用其他一些列,例如GU_ES3['NPOR'],但只有在这种情况下,GU_ES3['UPOR']列中的值是0或NaN。你知道吗
GU_ES3['UPOR']
GU_ES3['NPOR']
0
NaN
你能帮我吗?你知道吗
你想吗
对于(2),可以将0替换为NaN;对于(1),可以使用pd.Series.fillna将UPOR中的NaN填充为NPOR,但仅限于NaN所在的位置。你知道吗
pd.Series.fillna
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执行替换:
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))。你知道吗
.replace(dict.fromkeys([1, 2, 3], np.nan))
尝试使用^{}:
GU_ES3['Qnd'] = GU_ES3['Qnd,hw_m2'] * GU_ES3['UPOR'].where(~GU_ES3['UPOR'].isnull() & (GU_ES3['UPOR'] != 0), other=GU_ES3['NPOR'])
你想吗
对于(2),可以将0替换为NaN;对于(1),可以使用
pd.Series.fillna
将UPOR中的NaN填充为NPOR,但仅限于NaN所在的位置。你知道吗或者,可以使用
np.where
执行替换:请注意,使用replace时,例如,如果还希望替换1、2或3,则只需在代码中使用
.replace(dict.fromkeys([1, 2, 3], np.nan))
。你知道吗尝试使用^{} :
相关问题 更多 >
编程相关推荐