Python Ifthen命令上的Pandas

2024-04-26 06:55:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个代码如下

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

我发现,GU_ES3['UPOR']中的一些值是空的。在这个场景中,我想调用其他一些列,例如GU_ES3['NPOR'],但只有在这种情况下,GU_ES3['UPOR']列中的值是0NaN。你知道吗

你能帮我吗?你知道吗


Tags: 代码场景情况nanguhwm2qnd
2条回答

你想吗

  1. 在某种情况下,一个数据帧中的值被另一个数据帧替换
  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']
)

请注意,使用replace时,例如,如果还希望替换1、2或3,则只需在代码中使用.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'])

相关问题 更多 >