以下のような2つのデータフレームが与えられたとします。
items
item_id | item_category_id |
---|---|
1 | 51 |
2 | 11 |
3 | 42 |
transactions
|id|item_id|item_num|
|-------|----------------|
| 1 | 3 | 10 |
| 2 | 2 | 9 |
| 3 | 2 | 22 |
ここで transactions に item_category_id の列を新設したいです。
つまりitem_idの列に対応するitem_category_idを調べながら、列に追加していきたいです。
|id|item_id|item_num| item_category_id |
|-------|----------------|-------------|
| 1 | 3 | 10 | 42 |
| 2 | 2 | 9 | 11 |
| 3 | 2 | 22 | 11|
これを実現する最もスマートな方法は何でしょうか?
以下は私が試したコードですが、異様に計算時間がかかる上、エラーが出ました。
**追記***
エラーが起こったのは、DataFrameのindexが異なっているからだったようです。
一度右辺をリストにした後、pd.Seriesにし、さらにpd.concatでDataFrameを結合することで一応、目的は達成しました。
しかしながら、結構時間がかかるので、より良い方法があるのではないかと考えております。
またint()などとしているあたりも鈍重に感じます。
python
1transactions['item_category_id'] = 2 [ int(items[items['item_id']==ID]['item_category_id']) for ID in transactions['item_id'].tolist() ]
よろしくお願い致します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/10/20 16:30