pandas
であれば DataFrame.melt()
で実現できるかと思います
https://pandas.pydata.org/pandas-docs/version/0.23.4/generated/pandas.DataFrame.melt.html
Python
1import pandas as pd
2import io
3
4data = """
5logon,logoff
62018/10/17 13:29,2018/10/19 17:51
72018/10/19 18:04,2018/10/19 18:11
82018/10/24 10:18,2018/10/24 11:50
9"""
10
11df = pd.read_csv(io.StringIO(data), parse_dates=['logon','logoff'])
12# logon logoff
13#0 2018-10-17 13:29:00 2018-10-19 17:51:00
14#1 2018-10-19 18:04:00 2018-10-19 18:11:00
15#2 2018-10-24 10:18:00 2018-10-24 11:50:00
16
17result = df.melt(value_vars=['logon','logoff'])
18print(result)
19# variable value
20#0 logon 2018-10-17 13:29:00
21#1 logon 2018-10-19 18:04:00
22#2 logon 2018-10-24 10:18:00
23#3 logoff 2018-10-19 17:51:00
24#4 logoff 2018-10-19 18:11:00
25#5 logoff 2018-10-24 11:50:00
【追記】
反対の処理は DataFrame.pivot()
または DataFrame.pivot_table()
にて行うことができます。
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_table.html
Python
1import pandas as pd
2import io
3
4data = """
52018/10/17 13:29,logon
62018/10/19 17:51,logoff
72018/10/19 18:04,logon
82018/10/19 18:11,logoff
92018/10/24 10:18,logon
102018/10/24 11:50,logoff
11"""
12
13df = pd.read_csv(io.StringIO(data), header=None, parse_dates=[0])
14# 0 1
15#0 2018-10-17 13:29:00 logon
16#1 2018-10-19 17:51:00 logoff
17#2 2018-10-19 18:04:00 logon
18#3 2018-10-19 18:11:00 logoff
19#4 2018-10-24 10:18:00 logon
20#5 2018-10-24 11:50:00 logoff
21
22result = df.pivot(columns=1, index=df.index//2)
23# 0
24#1 logoff logon
25#0 2018-10-19 17:51:00 2018-10-17 13:29:00
26#1 2018-10-19 18:11:00 2018-10-19 18:04:00
27#2 2018-10-24 11:50:00 2018-10-24 10:18:00
28
29result = df.pivot_table(values=0, columns=1, aggfunc='first', index=df.index//2)
30#1 logoff logon
31#0 2018-10-19 17:51:00 2018-10-17 13:29:00
32#1 2018-10-19 18:11:00 2018-10-19 18:04:00
33#2 2018-10-24 11:50:00 2018-10-24 10:18:00
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/04/06 14:01
2019/04/06 15:45
2019/04/07 02:41