pandasで以下のような構造のデータフレームがあります。
列1 | 列2 | 列3 |
---|---|---|
1/2/3 | 100/200/500 | 600/400/600 |
これを以下のように、転置するようなイメージで形を変えることはかのうでしょうか。
列1 | 列2 | 列3 |
---|---|---|
1 | 100 | 600 |
2 | 200 | 400 |
3 | 500 | 600 |
よろしくお願いいたします。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答2件
0
df.iloc[0].str.split('/', expand=True).T
で良いのではないでしょうか
Python
1import pandas as pd 2df = pd.DataFrame([['1/2/3','100/200/500','600/400/600']], columns=['列1','列2','列3']) 3ret = df.iloc[0].str.split('/', expand=True).T 4# 列1 列2 列3 5#0 1 100 600 6#1 2 200 400 7#2 3 500 600
投稿2019/11/11 23:15
総合スコア15898
0
ベストアンサー
こんな感じでできるかもしれません。
Python
1import pandas as pd 2 3input_data = { '列1':['1/2/3', '4/5/6'], 4 '列2':['100/200/500','10/20/50'], 5 '列3':['600/400/600', '6000/4000/6000'] 6} 7df = pd.DataFrame(input_data) 8 9# 列ごとに'/'で分割してSeriesに変換し、stackで要素を行に変換。各列の結果を連結 10res = pd.concat([df[column].str.split('/').apply(pd.Series).stack() for column in df.columns ], axis=1, keys=df.columns) 11 12print(res) 13""" 14 列1 列2 列3 150 0 1 100 600 16 1 2 200 400 17 2 3 500 600 181 0 4 10 6000 19 1 5 20 4000 20 2 6 50 6000 21""" 22 23# MultiIndexを解除したい場合 24res = res.reset_index(drop=True).loc[:,df.columns] 25print(res) 26""" 27 列1 列2 列3 280 1 100 600 291 2 200 400 302 3 500 600 313 4 10 6000 324 5 20 4000 335 6 50 6000 34"""
投稿2019/11/11 21:34
総合スコア1627
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。