をパンダに追加する私は、特定の列Bが値の最も近くにある別の行のインデックスまたは値を保存する(たとえば)データフレームに新しい列「近隣」を導入したい現在の行 など。最も近い値を持つ行を取得する
A Neighbor
0 5 1
1 4 0
2 1 3
3 2 2
4 10 0
あなたはパンダの機能を知っていますか?私のデータセットは非常に大きいので、残念ながら遅すぎます。
ありがとうございます!
をパンダに追加する私は、特定の列Bが値の最も近くにある別の行のインデックスまたは値を保存する(たとえば)データフレームに新しい列「近隣」を導入したい現在の行 など。最も近い値を持つ行を取得する
A Neighbor
0 5 1
1 4 0
2 1 3
3 2 2
4 10 0
あなたはパンダの機能を知っていますか?私のデータセットは非常に大きいので、残念ながら遅すぎます。
ありがとうございます!
使用しています方法です:あなたの並べ替えた場合
df['myindex'] = df.index
# result = df.sort(['A'])
result = df.sort_values(by='A')
result['NeighborIndex'] = result['myindex'].shift(-1)
文書から: 種類:{'quicksort'、 'mergesort'、 'heapsort'}、デフォルト 'quicksort' ソートアルゴリズムの選択。詳細については、ndarray.np.sortも参照してください。 mergesortは唯一の安定したアルゴリズムです。 DataFramesの場合、このオプションは、単一の列またはラベルでソートする場合にのみ適用されます。 – boethius
並べ替えを最初に行うと、ソートを行う最適化を得ることができないか、パフォーマンスが低下することなくソートされていないリストをスキャンすることができない限り、n^2最悪の場合のランタイムを避けることができます。 – boethius
100万の行DBなどでこれを行うことを検討してください。 – boethius
IDK、あなたの前の質問のための私の更新の答えを確認するかどうか、これは私がこのような何かトリック行う可能性があります
a=df.A.values[:,None]-df.A.values
np.fill_diagonal(a, 9999999)
np.argmin(abs(a),0)
Out[1160]: array([1, 0, 3, 2, 0], dtype=int64)
をリスト全体(A)、あなたは単にインデックス上で.shift()を実行できますか?索引を列として格納すると、シフト関数がこのように索引を引き出すことができます。 – boethius