我有以下pandas数据框(水平向右漫步以查看所有列):
SIBT SOBT PLANNED_ARR_HOUR PLANNED_DEP_HOUR ARRIVAL_FLIGHT_HAUL DEPARTURE_FLIGHT_HAUL
2016-01-01 04:05:00 2016-01-01 14:10:00 4 14 Ultra Long Haul Long Haul
2016-01-01 04:25:00 2016-01-01 06:30:00 4 6 Ultra Long Haul Short Haul
2016-01-01 05:05:00 2016-01-01 07:05:00 5 7 Long Haul Long Haul
2016-01-01 05:20:00 2016-01-01 10:40:00 5 10 Short Haul Long Haul
2016-01-01 05:25:00 2016-01-01 10:50:00 5 10 Long Haul Long Haul
我需要合并列
SIBT
和SOBT
,PLANNED_ARR_HOUR
和PLANNED_DEP_HOUR
,ARRIVAL_FLIGHT_HAUL
和DEPARTURE_FLIGHT_HAUL
以获得新的数据帧,如下所示:DATETIME PLANNER_HOUR FLIGHT_HAUL TYPE
2016-01-01 04:05:00 4 Ultra Long Haul ARR
2016-01-01 14:10:00 14 Long Haul DEP
2016-01-01 04:25:00 4 Ultra Long Haul ARR
2016-01-01 06:30:00 6 Short Haul DEP
...
基本上,每一行应该分成两行,以便到达(ARR)和离开(DEP)。
SIBT
、PLANNED_ARR_HOUR
和ARRIVAL_FLIGHT_HAUL
指的是arr(到达)类型。SOBT
、PLANNED_DEP_HOUR
和DEPARTURE_FLIGHT_HAUL
指DEP(出发)类型。我该怎么做?
最佳答案
我认为最简单的方法是逐列从原始表中提取到达和离开,重命名列并重新组合。例如
arrive = data[ ['SIBT', 'PLANNED_ARR_HOUR', 'ARRIVAL_FLIGHT_HAUL'] ]
depart = data[ ['SOBT', 'PLANNED_DEP_HOUR', 'DEPARTURE_FLIGHT_HAUL'] ]
现在有两个具有相关列的数据帧,请将两个数据帧的列名更改为所需的输出。
arrive.columns = ['DATETIME', 'PLANNER_HOUR', 'FLIGHT_HAUL']
depart.columns = ['DATETIME', 'PLANNER_HOUR', 'FLIGHT_HAUL']
添加类型列。
arrive['TYPE'] = 'ARR'
depart['TYPE'] = 'DEP'
现在它们有了相同的列名,可以像普通列名那样连接起来。
result = pd.concat([arrive, depart])