回答編集履歴

1

回答が間違っていたので追加修正

2019/04/06 15:53

投稿

magichan
magichan

スコア15898

test CHANGED
@@ -59,3 +59,91 @@
59
59
  #5 logoff 2018-10-24 11:50:00
60
60
 
61
61
  ```
62
+
63
+
64
+
65
+ 【追記】
66
+
67
+
68
+
69
+ 反対の処理は ``DataFrame.pivot()`` または ``DataFrame.pivot_table()`` にて行うことができます。
70
+
71
+
72
+
73
+
74
+
75
+ [https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.pivot.html](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.pivot.html)
76
+
77
+ [https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.pivot_table.html](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.pivot_table.html)
78
+
79
+
80
+
81
+ ```Python
82
+
83
+ import pandas as pd
84
+
85
+ import io
86
+
87
+
88
+
89
+ data = """
90
+
91
+ 2018/10/17 13:29,logon
92
+
93
+ 2018/10/19 17:51,logoff
94
+
95
+ 2018/10/19 18:04,logon
96
+
97
+ 2018/10/19 18:11,logoff
98
+
99
+ 2018/10/24 10:18,logon
100
+
101
+ 2018/10/24 11:50,logoff
102
+
103
+ """
104
+
105
+
106
+
107
+ df = pd.read_csv(io.StringIO(data), header=None, parse_dates=[0])
108
+
109
+ # 0 1
110
+
111
+ #0 2018-10-17 13:29:00 logon
112
+
113
+ #1 2018-10-19 17:51:00 logoff
114
+
115
+ #2 2018-10-19 18:04:00 logon
116
+
117
+ #3 2018-10-19 18:11:00 logoff
118
+
119
+ #4 2018-10-24 10:18:00 logon
120
+
121
+ #5 2018-10-24 11:50:00 logoff
122
+
123
+
124
+
125
+ result = df.pivot(columns=1, index=df.index//2)
126
+
127
+ # 0
128
+
129
+ #1 logoff logon
130
+
131
+ #0 2018-10-19 17:51:00 2018-10-17 13:29:00
132
+
133
+ #1 2018-10-19 18:11:00 2018-10-19 18:04:00
134
+
135
+ #2 2018-10-24 11:50:00 2018-10-24 10:18:00
136
+
137
+
138
+
139
+ result = df.pivot_table(values=0, columns=1, aggfunc='first', index=df.index//2)
140
+
141
+ #1 logoff logon
142
+
143
+ #0 2018-10-19 17:51:00 2018-10-17 13:29:00
144
+
145
+ #1 2018-10-19 18:11:00 2018-10-19 18:04:00
146
+
147
+ #2 2018-10-24 11:50:00 2018-10-24 10:18:00
148
+
149
+ ```