我有以下 pandas DataFrame(向右水平滚动以查看所有列):
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
以获得新的 DataFrame,如下所示:
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(出发)类型。
我该怎么做?
最佳答案
最简单的是分成两部分然后连接:
dep_cols = ['SOBT', 'PLANNED_DEP_HOUR', 'DEPARTURE_FLIGHT_HAUL']
arr_cols = ['SIBT', 'PLANNED_ARR_HOUR', 'ARRIVAL_FLIGHT_HAUL']
new_cols = ['DATETIME','PLANNER_HOUR','FLIGHT_HAUL']
dep = df[dep_cols].copy()
arr = df[arr_cols].copy()
dep.columns, arr.columns = new_cols, new_cols
dep['TYPE'] = 'DEP'
arr['TYPE'] = 'ARR'
pd.concat([dep, arr])
DATETIME PLANNER_HOUR FLIGHT_HAUL TYPE
0 2016-01-01 14:10:00 14 Long Haul DEP
1 2016-01-01 06:30:00 6 Short Haul DEP
2 2016-01-01 07:05:00 7 Long Haul DEP
3 2016-01-01 10:40:00 10 Long Haul DEP
4 2016-01-01 10:50:00 10 Long Haul DEP
0 2016-01-01 04:05:00 4 Ultra Long Haul ARR
1 2016-01-01 04:25:00 4 Ultra Long Haul ARR
2 2016-01-01 05:05:00 5 Long Haul ARR
3 2016-01-01 05:20:00 5 Short Haul ARR
4 2016-01-01 05:25:00 5 Long Haul ARR
关于python - 如何根据规则将DataFrame的每一行拆分为两行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54850299/