"short_id"という名前の100以上のスケールに対して、パンダのデータフレームのtimeseriesウエイトがあります。私は異常値を除去するために各スケールの重量データに移動フィルターを適用する最善の方法を考え出すのに問題があります。 「short_id」あたりの辞書にデータフレームを変換し、うまくいかなかったdictの項目ごとにフィルタを適用する移動、また「ワイドにデータを変換しなかったインデックス付きカテゴリ変数ごとにデータフレームに移動平均列を追加する
Out[159]:
published_at short_id weight
0 2017-11-08 16:03:36 INT16 50.35
1 2017-11-08 16:02:43 INT1 45.71
2 2017-11-08 16:02:10 NOT11 35.52
3 2017-11-08 16:01:07 INT7 50.03
4 2017-11-08 16:00:23 INT3 47.04
:ここ
は、データのサンプルです"(" pandas.pivot_table "を使用して)" long "からのフォーマット。それは.applyローリング機能、その後groupy.byを使用して1行で可能かもしれないように思える:
df['MovingFilt'] = df.groupby('short_id')['weight'].apply(pd.rolling(6).median())
が、エラー受信:TypeError例外:フレームインデックスと挿入された列の互換性のないインデックスを...これは、時々あるスケールのために同時に時々に重量データがあるが、通常はそうではないからである。
は、これが問題にアプローチするための最良の方法です?:
使用し、「short_id」ごとに新しいデータフレームを作成し、それは罰金
INT16['MovingFilt'] = pd.Series.rolling(INT16['weight'], window=6, center=True).median()
ありがとう、私は欠けている括弧と更新された投稿を追加しました。私は時々オーバーラップするタイムスタンプに問題があると思う – Evan