Pandas 在 Python If-then 命令上
Pandas on Python If-then command
我有一个代码如下
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),您可以用NaN替换0,对于(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))
。
尝试使用 pd.Series.where
:
GU_ES3['Qnd'] = GU_ES3['Qnd,hw_m2'] * GU_ES3['UPOR'].where(~GU_ES3['UPOR'].isnull() & (GU_ES3['UPOR'] != 0), other=GU_ES3['NPOR'])
我有一个代码如下
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),您可以用NaN替换0,对于(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))
。
尝试使用 pd.Series.where
:
GU_ES3['Qnd'] = GU_ES3['Qnd,hw_m2'] * GU_ES3['UPOR'].where(~GU_ES3['UPOR'].isnull() & (GU_ES3['UPOR'] != 0), other=GU_ES3['NPOR'])