0

2 つのデータフレームがあり、一方が他方のスライスであるとします。

小さい DF を反復処理している場合、大きい DF でインデックスを見つけて、それが存在する行を見つけるにはどうすればよいですか?

したがって、次のようになります。

for idx in smaller.index:
    loc = bigger.ix[ix]**.row_location???**
    while not fin:
        looking_for_something = bigger.iloc[loc]
        if looking_for_something != criteria:
            loc += 1
        else:
            fin = 1

簡単なことだと思いますが、これを行う方法が見つからないようです。

4

1 に答える 1

0

smallerが のスライスである場合bigger、 で探しているすべての情報が でbigger既に利用可能ではsmallerないでしょうか?

biggerそうでない場合は、 に存在しない列がいくつかある可能性がありますsmaller。(smallerこれらの列を含めるように定義する必要があったのではないでしょうか?) いずれにせよ、pd.mergeまたはを使用して、 の行を同じインデックスを共有するの行smaller.join(bigger, how='inner', ...)と一致させることができます。これにより、探しているすべての一致が一挙に達成されますbiggersmaller

for idx in smaller.index:
    loc = bigger.ix[ix]**.row_location???**

さらに、それはより速くなります。一般に、行ごとに操作を実行することは、結果を得る最速の方法ではありません。join、merge、groupby、または一度に配列全体で機能する操作の観点から考える方が良いでしょう。

于 2013-04-28T21:56:16.010 に答える