下記のように、エクセルファイルにて2行1データとなっているものを、1行1データに編集したいです。
試したこと
pandasで、元データを「奇数行」と「偶数行」のデータフレームに分割。
その後、「奇数行df」へ「偶数行df」の列を挿入しようと考えましたが
方法がよくわかりません。
補足情報(FW/ツールのバージョンなど)
python3.6
pandas0.23
###追加情報
下記のようなコードで、ある程度やりたいことはできました。
が、かなり無理やりな気がします。もう少しスマートなコード記述はできないか
ご教授いただけると勉強になります。
Python
1import pandas as pd 2 3#あらかじめ、元データを'test1.xlsx'で作成済み 4df = pd.read_excel('test1.xlsx', sheet_name=0, header=0) 5 6#奇数行 7df_odd = df[::2] 8#不要行、列を削除 9df_odd_drop =df_odd.drop(index=0, columns='都道府県') 10#列名を修正 11df_odd_drop_r = df_odd_drop.rename(columns={'平成22年人口、順位': '平成22年人口', '人口密度、順位': '人口密度'}) 12 13#偶数行 14df_even = df[1::2] 15#列名を修正 16df_even_r = df_even.rename(columns={'平成22年人口、順位': '人口順位', '人口密度、順位': '人口密度順位'}) 17 18#indexのリセット 19df_odd_drop_r_r = df_odd_drop_r.reset_index(drop=True) 20df_even_r_r = df_even_r.reset_index(drop=True) 21 22# インデックスでマージ 23df3 = pd.concat( [df_odd_drop_r_r, df_even_r_r], axis=1) 24 25#列の並び替え 26df3_ix = df3.ix[:,['都道府県', '平成22年人口', '人口順位', '人口密度', '人口密度順位']] 27 28#結果の出力 29df3_ix.to_excel('df3.xlsx') 30 31 32#以下出力結果 33 都道府県 平成22年人口 人口順位 人口密度 人口密度順位 340 東京 13159.0 1.0 6168.7 1.0 351 大阪 8865.0 3.0 4639.8 2.0 362 神奈川 9048.0 2.0 3777.7 3.0 373 埼玉 7195.0 5.0 1913.4 4.0 384 愛知 7411.0 4.0 1446.7 5.0 395 千葉 6216.0 6.0 1206.5 6.0 406 福岡 5072.0 9.0 1023.1 7.0 417 兵庫 5588.0 7.0 658.8 8.0 428 沖縄 1393.0 20.0 628.4 9.0 439 京都 2636.0 13.0 566.0 10.0
回答2件
あなたの回答
tips
プレビュー