パンダでは、あるテーブルの値をインデックスとして使用して、別のテーブルからデータを抽出するにはどうすればよいですか?

user5406764

これは本当に簡単なはずなのに、苦労しています。私がこれを持っているとしましょう:

df1:

ticker  hhmm <--- The hhmm value corresponds to the column in df2
======  ====
AAPL    0931
IBM     0930
XRX     1559

df2:

ticker  0930  0931  0932 ... 1559   <<---- 390 columns
======  ====  ====  ==== ... ====
AAPL    4.56  4.57  ...      ...     
IBM     7.98  ...   ...      ...
XRX     3.33  ...   ...      3.78

目標は、値がdf2 [df1 ['hhmm']]であるdf1に新しい列を作成することです。

例えば:

df1:

ticker  hhmm  df2val
======  ====  ======
AAPL    0931    4.57
IBM     0930    7.98
XRX     1559    3.78

どちらのdfもインデックスとして「ティッカー」を持っているので、単純に結合できますが、これはメモリを使いすぎていると想定します(使用しているデータフレームはここに示す例よりもはるかに大きいです)。

私は適用しようとしました、そしてそれは遅いです(実行するのに15分)。

これを行うためのパンダの方法は何ですか?ありがとう!

BEN_YO

と呼ばれる関数があります lookup

df1['val']=df2.set_index('ticker').lookup(df1.ticker,df1.hhmm)
df1
Out[290]: 
  ticker  hhmm    val
0   AAPL  0931   4.57
1    IBM  0930   7.98
2    XRX  1559  33.00# I make up this number

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

Related 関連記事

ホットタグ

アーカイブ