質問: A | index | date | | --- | --- | | 0 | 1/1 | | 1 | 1/1 | | 3 | 1/2 | B | date | location | tempA | tempB | | --- | --- | --- | --- | | 1/1 | Tokyo | 23 | 30 | | 1/1 | Osaka | 25 | 31 | | 1/1 | Nagoya | 22 | 33 | | 1/2 | Tokyo | 24 | 32 | | 1/2 | Osaka | 26 | 33 | | 1/2 | Nagoya | 23 | 29 | AとBの表があって、dateをキーとして、Aの表にそれぞれの地点のtempA,tempB列をt追加したいので、locationの値によって、データフレームを分割し、1つ1つ表Aにマージしていけばできるかなと思いまして、上の質問をしました。 ↓こんなイメージ | index | date | tempA_Tokyo | tempB_Tokyo | tempA_Osaka | tempB_Osaka | tempA_Kanagawa | tempB_Kanagawa | | --- | --- | --- | --- | --- | --- | --- | --- | | 0 | 1/1 | 23 | 30 | 25 | 31 | 22 | 33 | | 1 | 1/1 | 23 | 30 | 25 | 31 | 22 | 29 | | 2 | 1/2 | 24 | 32 | 26 | 33 | 23 | 29 | データフレーム名称に繰り返し処理を用いなくてもこの表が作れるのであれば嬉しいですが、 ディレクトリにある複数のCSVファイルを読み込む際に、データフレーム名をfor文の中で回せると便利なので、その解決法もかねて質問させていただきました。
回答: 要するに表の結合(merge)をやりたいわけですね。それならデータフレームの分割などというステップは不要です。 下記のmergeの解説(列の値による結合)を参考にしてみてください。たとえば東京なら`B.ix[B.location=="Tokyo",:]`を結合すればいいのではないでしょうか。これができたらdf_locationの値を使ってループを回すようにすれば目標達成と思われます。 http://sinhrks.hatenablog.com/entry/2015/01/28/073327