qcutを適用する必要がある何千ものシリーズ(DataFrameの行)があります。定期的に、所望の分位(2位数対たとえば、1つの値)よりも少ない値を持つシリーズ(行)があります:私はそれに.quantile()
を適用するパンダはクオンタイルよりも少ない値を持つシリーズでqcutを使用します
>>> s = pd.Series([5, np.nan, np.nan])
、それが(2分位に侵入問題はありません同じ境界値)
>>> s.quantile([0.5, 1])
0.5 5.0
1.0 5.0
dtype: float64
しかし、私は変位値の数の整数値で.qcut()
を適用すると、エラーがスローされます。
>>> pd.qcut(s, 2)
...
ValueError: Bin edges must be unique: array([ 5., 5., 5.]).
You can drop duplicate edges by setting the 'duplicates' kwarg
イブ私はduplicates
引数を設定した後、N、それはまだ失敗:
>>> pd.qcut(s, 2, duplicates='drop')
....
IndexError: index 0 is out of bounds for axis 0 with size 0
私はこの作業を行うにはどうすればよいですか? [OK]を、これは可能性があります回避策
0 (4.999, 5.000]
1 NaN
2 NaN
pd.qcut(s、2)のためのあなたの望ましい出力は何ですか?あなたは1つのユニークな価値しか持たず、なぜ1つ以上のビンを作りたいのですか? – Allen
非常に具体的なケースを抽出しています。実際には私は何千ものシリーズを持っていますが、そのすべてを切る必要があります。しかしqcut()はこのような外れ値の行に問題を引き起こします。私は希望の出力で質問を修正しました。 – Zhang18
'qcut'を' try-except'ブロックで囲んで障害のあるシリーズを捕まえてください(あまりにも短いものを取得するだけで十分です)。半手動で半手動で処理してください –