1. ホーム
  2. python

[解決済み] PandasのNaNや他の名前のクエリ

2023-07-25 20:48:18

質問

データフレーム df というカラムを持つ value にはいくつかの浮動小数点数、そして NaN . データフレーム内の NaN というクエリ構文を使って ?

例えば次のようにするとうまくいきません。

df.query( '(value < 10) or (value == NaN)' )

私は name NaN is not defined (同じ df.query('value ==NaN') )

一般に、クエリでnumpy名を使用する方法は inf , nan , pi , e などでしょうか?

どのように解決するのですか?

一般的には @local_variable_name というように

>>> pi = np.pi; nan = np.nan
>>> df = pd.DataFrame({"value": [3,4,9,10,11,np.nan,12]})
>>> df.query("(value < 10) and (value > @pi)")
   value
1      4
2      9

は動作しますが nan はそれ自身と等しくないので value == NaN は常に偽になります。 これを回避する一つの方法は、その事実を利用して value != valueisnan をチェックします。 私たちは

>>> df.query("(value < 10) or (value == @nan)")
   value
0      3
1      4
2      9

しかし

>>> df.query("(value < 10) or (value != value)")
   value
0      3
1      4
2      9
5    NaN