回答編集履歴

1

サンプル追加

2018/11/16 07:21

投稿

magichan
magichan

スコア15898

test CHANGED
@@ -45,3 +45,71 @@
45
45
  #2 大阪 福岡 None 大阪
46
46
 
47
47
  ```
48
+
49
+
50
+
51
+ ---
52
+
53
+
54
+
55
+ **【追記】**
56
+
57
+
58
+
59
+ ループを使う方法
60
+
61
+
62
+
63
+ ```Python
64
+
65
+ import pandas as pd
66
+
67
+
68
+
69
+ df = pd.DataFrame([[1,'大阪','東京'],
70
+
71
+ [1,'東京','北海道'],
72
+
73
+ [1,'北海道','大阪'],
74
+
75
+ [2,'大阪','福岡'],
76
+
77
+ [2,'福岡','大阪']],
78
+
79
+ columns=['旅行者','出発地','目的地'])
80
+
81
+
82
+
83
+ max_trip_size = df.groupby('旅行者').size().max()
84
+
85
+
86
+
87
+ df1 = pd.DataFrame(columns=range(max_trip_size + 1))
88
+
89
+ for member,d in df.groupby('旅行者'):
90
+
91
+ # 出発地+経由地を追加
92
+
93
+ df1 = df1.append(d['出発地'].reset_index(drop=True).rename(member))
94
+
95
+ # 到着地を追加
96
+
97
+ df1.loc[member, max_trip_size] = d['目的地'].iat[-1]
98
+
99
+
100
+
101
+ # カラム名を修正
102
+
103
+ df1 = df1.add_prefix('経由地')
104
+
105
+ df1 = df1.rename(columns={'経由地0':'出発地', '経由地{}'.format(max_trip_size):'到着地'})
106
+
107
+ print(df1)
108
+
109
+ # 出発地 経由地1 経由地2 到着地
110
+
111
+ #1 大阪 東京 北海道 大阪
112
+
113
+ #2 大阪 福岡 NaN 大阪
114
+
115
+ ```