【问题标题】:how to assign to slice of slice in pandas如何分配给熊猫切片
【发布时间】:2020-05-10 05:01:54
【问题描述】:

我有一个如图所示的 pandas 数据框 df

   col1  col2
0   NaN     a
1     2     b
2   NaN     c
3   NaN     d
4     5     e
5     6     f

我想在 col1 中找到第一个 NaN 值并为其分配一个新值。以下两种方法我都试过了,但都不行。

df.loc[df['col'].isna(), 'col1'][0] = 1

df.loc[df['col'].isna(), 'col1'].iloc[0] = 1

它们都没有显示任何错误或警告。但是当我检查原始数据框的值时,它并没有改变。

这样做的正确方法是什么?

【问题讨论】:

  • 你读过 Pandas 文档吗?

标签: python pandas dataframe slice


【解决方案1】:

您可以将.fillna()limit=1 参数一起使用:

df['col1'].fillna(1, limit=1, inplace=True)

print(df)

打印:

   col1 col2
0   1.0    a
1   2.0    b
2   NaN    c
3   NaN    d
4   5.0    e
5   6.0    f

【讨论】:

  • 这是个好主意!但是如果我想填充第二个 NaN 怎么办?或者只是我选择的随机索引,例如,从 M'th 到 N'th [M:N]?
  • @theoxx 例如df.loc[df[df['col1'].isna()].index[2], 'col1'] = 1 将更改行3 1.0 d
猜你喜欢
  • 2021-02-09
  • 1970-01-01
  • 2020-03-17
  • 1970-01-01
  • 2018-05-14
  • 1970-01-01
  • 1970-01-01
  • 2022-10-14
  • 2023-01-26
相关资源
最近更新 更多