質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

Q&A

解決済

1回答

742閲覧

pandasでデータフレーム名称に繰り返し処理を用いる方法

uratatsu

総合スコア9

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

0グッド

0クリップ

投稿2018/07/22 01:54

編集2018/07/22 05:28

ppandasでデータフレーム名称に繰り返し処理を用いたい

Python初心者です。
あるdataframeの特定列の値によってdataframeを分割したい。その際、dataframe名称を列の値によって名づけたい。

やりたいこと

下記のように10都府県の値が格納されたdataframe "df_location"があるとします。

print(df_location["地域名"].unique().tolist())

['Tokyo', 'Osaka', 'Kanagawa', 'Aichi', 'Hukuoka', 'Hiroshima', 'Miyagi', 'Kochi', 'Hyogo', 'Saitama']

それぞれの地域ごとにdataframeを分割して格納し、dataframeの名称をそれぞれの都府県名称をつけて、df_location_Tokyo, df_location_Osaka,・・・・・というように名付けていきたいです。

試したこと

for location in l_list: df_location_os.path.basename(location) = df_location[df_location["地域名"] == location] )

いろいろ調べてos.path.basenameとか、{}.format()を活用してみようかと試しましたが、うまくできず。。

名称をつけるところがうまくいきません。
どなたかよろしくお願いいたします。

補足情報(FW/ツールのバージョンなど)

pandas 0.23.0
Python 3.6.4 :: Anaconda custom (64-bit)
jupyter notebookを使用

#やりたいこと追記
A

indexdate
01/1
11/1
31/2

B

datelocationtempAtempB
1/1Tokyo2330
1/1Osaka2531
1/1Nagoya2233
1/2Tokyo2432
1/2Osaka2633
1/2Nagoya2329

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文の中で回せると便利なので、その解決法もかねて質問させていただきました。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

KojiDoi

2018/07/22 04:13

df["Tokyo"]のようにすれば普通にアクセスできるものをわざわざ別のdfにしたい理由は何なのでしょうか。
uratatsu

2018/07/22 05:30

返信ありがとうございます。別のデータフレームにしたい理由について、やりたいことを質問本文に追記させていただきました。よろしくお願いします。
guest

回答1

0

ベストアンサー

要するに表の結合(merge)をやりたいわけですね。それならデータフレームの分割などというステップは不要です。

下記のmergeの解説(列の値による結合)を参考にしてみてください。たとえば東京ならB.ix[B.location=="Tokyo",:]を結合すればいいのではないでしょうか。これができたらdf_locationの値を使ってループを回すようにすれば目標達成と思われます。

http://sinhrks.hatenablog.com/entry/2015/01/28/073327

投稿2018/07/22 05:56

KojiDoi

総合スコア13669

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

uratatsu

2018/07/23 01:57

この課題については、それで問題なくできました。ありがとうございます。ディレクトリにある複数のCSVファイルを読み込む際に、データフレーム名をfor文の中で回す話は別トピックで質問することにします!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問