根据条件用“ NaN”替换Pandas DataFrame中的一行

时间:2020-08-05 16:53:36

标签: python pandas dataframe filter

我有一个名为df的Pandas DataFrame(378000,82),我想根据特定条件用NaN替换整行。条件是列df.halon_gas中大于20的任何值,我想用NaN替换整行。这是我要过滤数据的方式,这样我就不会丢失索引值。

谢谢!

2 个答案:

答案 0 :(得分:1)

如果行行没事,那么我建议您这样做:

df.reset_index(level=0, inplace=True)
df = df[df.halon_gas <= 20]
df.set_index("index", inplace=True)

这是怎么回事:

  1. 索引将被重置,因此您将有一个额外的列,其索引值已被删除。
  2. 仅保留df.halon_gas <= 20的行。
  3. 旧的Index值再次设置为DataFrame的Index。

答案 1 :(得分:0)

首先获取所有小于20的值的索引

    idx = df[df.halon_gas >= 20].index

然后将所有列和所有低于200的列的值设置为None

    df.set_value(idx, df.columns , None)

这应该在值小于20的行中写入None / Nan