python:将nan分配给Dataframe的行

时间:2021-06-25 09:15:09

标签: python pandas

我有一个 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

1 个答案:

答案 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

即第一行和最后一行被NaNed。

相关问题