python:将 nan 分配给 Dataframe 的行

标签 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

最佳答案

您可以首先获取一个 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

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

关于python:将 nan 分配给 Dataframe 的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68128488/

相关文章:

以适当的单位返回函数值的 Pythonic 方法

python - python 3.5 中的多个相对导入

python - 如何在 Selenium Webdriver Python 3 中使用 Chrome 配置文件

python - 设置 Flask 站点时出现问题

python - 如何将自定义函数应用于 dask 数据框中的组,使用多列作为函数输入

python - 值错误: could not convert string to float: '1,141'

python - Pandas 删除行与过滤器

python - 相当于 Python 中列表的索引

python - pandas dataframe python列中词频计数的输出不一致

python - "pandas datetime convert to num"中的问题