質問編集履歴

2

自己解決(仮)を追記

2018/10/30 22:56

投稿

Hiroms
Hiroms

スコア17

test CHANGED
File without changes
test CHANGED
@@ -30,7 +30,13 @@
30
30
 
31
31
  ###追加情報
32
32
 
33
- 下記のようなコードで、奇数行と偶数行のデータフレームに分けるところまきました。
33
+ 下記のようなコードで、程度やりたいこできました。
34
+
35
+ が、かなり無理やりな気がします。もう少しスマートなコード記述はできないか
36
+
37
+ ご教授いただけると勉強になります。
38
+
39
+
34
40
 
35
41
  ```Python
36
42
 
@@ -38,58 +44,86 @@
38
44
 
39
45
 
40
46
 
47
+ #あらかじめ、元データを'test1.xlsx'で作成済み
48
+
41
49
  df = pd.read_excel('test1.xlsx', sheet_name=0, header=0)
42
50
 
43
51
 
44
52
 
45
53
  #奇数行
46
54
 
47
- print('奇数行')
48
-
49
55
  df_odd = df[::2]
50
56
 
57
+ #不要行、列を削除
58
+
51
- print(df_odd.head())
59
+ df_odd_drop =df_odd.drop(index=0, columns='都道府県')
60
+
61
+ #列名を修正
62
+
63
+ df_odd_drop_r = df_odd_drop.rename(columns={'平成22年人口、順位': '平成22年人口', '人口密度、順位': '人口密度'})
52
64
 
53
65
 
54
66
 
55
67
  #偶数行
56
68
 
57
- print('偶数行')
58
-
59
69
  df_even = df[1::2]
60
70
 
71
+ #列名を修正
72
+
73
+ df_even_r = df_even.rename(columns={'平成22年人口、順位': '人口順位', '人口密度、順位': '人口密度順位'})
74
+
75
+
76
+
77
+ #indexのリセット
78
+
79
+ df_odd_drop_r_r = df_odd_drop_r.reset_index(drop=True)
80
+
61
- print(df_even.head())
81
+ df_even_r_r = df_even_r.reset_index(drop=True)
82
+
83
+
84
+
85
+ # インデックスでマージ
86
+
87
+ df3 = pd.concat( [df_odd_drop_r_r, df_even_r_r], axis=1)
88
+
89
+
90
+
91
+ #列の並び替え
92
+
93
+ df3_ix = df3.ix[:,['都道府県', '平成22年人口', '人口順位', '人口密度', '人口密度順位']]
94
+
95
+
96
+
97
+ #結果の出力
98
+
99
+ df3_ix.to_excel('df3.xlsx')
100
+
101
+
62
102
 
63
103
 
64
104
 
65
105
  #以下出力結果
66
106
 
67
- 奇数行
107
+ 都道府県 平成22年人口 人口順位 人口密度 人口密度順位
68
108
 
69
- 都道府県 平成22年人口、順位 人口密度、順位
109
+ 0 東京 13159.0 1.0 6168.7 1.0
70
110
 
71
- 0 NaN NaN NaN
111
+ 1 大阪 8865.0 3.0 4639.8 2.0
72
112
 
73
- 2 NaN 13159.0 6168.7
113
+ 2 神奈川 9048.0 2.0 3777.7 3.0
74
114
 
75
- 4 NaN 8865.0 4639.8
115
+ 3 埼玉 7195.0 5.0 1913.4 4.0
76
116
 
77
- 6 NaN 9048.0 3777.7
117
+ 4 愛知 7411.0 4.0 1446.7 5.0
78
118
 
79
- 8 NaN 7195.0 1913.4
119
+ 5 千葉 6216.0 6.0 1206.5 6.0
80
120
 
81
- 偶数行
121
+ 6 福岡 5072.0 9.0 1023.1 7.0
82
122
 
83
- 都道府県 平成22年人口、順位 人口密度、順位
123
+ 7 兵庫 5588.0 7.0 658.8 8.0
84
124
 
85
- 1 東京 1.0 1.0
125
+ 8 沖縄 1393.0 20.0 628.4 9.0
86
126
 
87
- 3 大阪 3.0 2.0
127
+ 9 京都 2636.0 13.0 566.0 10.0
88
-
89
- 5 神奈川 2.0 3.0
90
-
91
- 7 埼玉 5.0 4.0
92
-
93
- 9 愛知 4.0 5.0
94
128
 
95
129
  ```

1

私ができたところまでのコードを追記しました。

2018/10/30 22:56

投稿

Hiroms
Hiroms

スコア17

test CHANGED
File without changes
test CHANGED
@@ -25,3 +25,71 @@
25
25
  python3.6
26
26
 
27
27
  pandas0.23
28
+
29
+
30
+
31
+ ###追加情報
32
+
33
+ 下記のようなコードで、奇数行と偶数行のデータフレームに分けるところまでできました。
34
+
35
+ ```Python
36
+
37
+ import pandas as pd
38
+
39
+
40
+
41
+ df = pd.read_excel('test1.xlsx', sheet_name=0, header=0)
42
+
43
+
44
+
45
+ #奇数行
46
+
47
+ print('奇数行')
48
+
49
+ df_odd = df[::2]
50
+
51
+ print(df_odd.head())
52
+
53
+
54
+
55
+ #偶数行
56
+
57
+ print('偶数行')
58
+
59
+ df_even = df[1::2]
60
+
61
+ print(df_even.head())
62
+
63
+
64
+
65
+ #以下出力結果
66
+
67
+ 奇数行
68
+
69
+ 都道府県 平成22年人口、順位 人口密度、順位
70
+
71
+ 0 NaN NaN NaN
72
+
73
+ 2 NaN 13159.0 6168.7
74
+
75
+ 4 NaN 8865.0 4639.8
76
+
77
+ 6 NaN 9048.0 3777.7
78
+
79
+ 8 NaN 7195.0 1913.4
80
+
81
+ 偶数行
82
+
83
+ 都道府県 平成22年人口、順位 人口密度、順位
84
+
85
+ 1 東京 1.0 1.0
86
+
87
+ 3 大阪 3.0 2.0
88
+
89
+ 5 神奈川 2.0 3.0
90
+
91
+ 7 埼玉 5.0 4.0
92
+
93
+ 9 愛知 4.0 5.0
94
+
95
+ ```