我有一个 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
最佳答案
您可以首先获取一个 bool 系列,该系列表示一行中是否从第一列开始包含任何 NaN
。然后,您可以使用 bool 索引并将这些行的列从第一个开始设置为 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。
关于python:将 nan 分配给 Dataframe 的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68128488/