我有一个 pd 数据框,有些值为 nan。
如果该行有一个 nan 值,我想做的是将 nan 值分配给该行的所有元素(不包括第一列的元素)。
例如,给定以下数据帧:
Code 1996 1997 1998
GBA 100 nan 5
JOY 120 10 30
WII 300 nan nan
所需的输出是:
Code 1996 1997 1998
GBA nan nan nan
JOY 120 10 30
WII nan nan nan
答案 0 :(得分:1)
您可以先获得一个布尔系列,该系列表示从第一列开始的行中是否包含任何 NaN
。然后您可以使用布尔索引并将这些行的列从第一个开始设置为 NaN
:
has_nan = df.loc[:, "1996":].isna().any(axis=1)
df.loc[has_nan, "1996":] = np.nan
得到
>>> df
Code 1996 1997 1998
0 GBA NaN NaN NaN
1 JOY 120.0 10.0 30.0
2 WII NaN NaN NaN
has_nan
是
0 True
1 False
2 True
dtype: bool
即第一行和最后一行被NaN
ed。