これはEfficient way to compare elements in 2 listsと似ていますが、基本的に質問に拡張があります。2つのリストの要素を効率的に比較する方法は?
は、私は二つのリストを持っていると言う:
a = [1,2,4,1,0,3,2]
b = [0,1,2,3,4]
要素がb
の各要素に等しい私はa
のインデックスを知りたいです。
たとえば、b[1]
の出力例では、に[0,3]
と出力されます。
データフレームの出力も同様に有用であろう、何かのように:
b = pd.DataFrame(b)
a = pd.DataFrame(a)
pd.merge(b.reset_index(),a.reset_index(),
left_on=b.columns.tolist(),
right_on = a.columns.tolist(),
suffixes = ('_b','_a'))['index_b','index_a']]
しかし、私は、これはこれらがためのものですので、必要であればわからない午前:私は前に使用した何
b index_a
0 4
1 0
1 3
2 1
2 6
3 5
4 3
リスト。 (以前私がデータフレームを扱っていたときにこの方法を使用しました)。
もっと多くのリストを使ってこの操作を何千回もやっているので、もっと効率的な方法があるのだろうかと思っています。また
誰もが、私はそれを大幅に感謝し、いくつかの入力を持っている場合は、bがちょうどlist(range(X))
どここの場合X = 5
です!
おかげ
は、我々は 'A'のすべての要素が 'B'に含まれることを前提とすることはできますか? –
まあ、 'b'は役に立たない。実際の情報は単に「N」である。 '0..N-1'の範囲の値から' a'のインデックスまでのマッピングを作ることができます。このマッピングを構築するには、単に 'a'をループさせるだけです。 'b = list(range(N)) 'のため、' b'の値 'x'を持つ要素はインデックス' x'にあることに注意してください。実際には、マッピングがキーとして連続する整数を持つので、リストのリストで十分です: 'indices = [[] for _ in b]; for i、x in enumerate(a):indices [x] .append(i) ' – Bakuriu
はい、申し訳ありません。 –