python - 如何根据规则将DataFrame的每一行拆分为两行?

标签 python pandas

我有以下 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

我需要合并列 SIBTSOBTPLANNED_ARR_HOURPLANNED_DEP_HOURARRIVAL_FLIGHT_HAULDEPARTURE_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)。

  • SIBTPLANNED_ARR_HOURARRIVAL_FLIGHT_HAUL 指的是类型 ARR(到达)。

  • SOBTPLANNED_DEP_HOURDEPARTURE_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/

相关文章:

python - Python 2.7 中模块导入错误

python - 从读取 csv 转换为 excel - pandas/python

python - 有没有比 idxmax 更快的替代方法?

python - 如何区分 Pandas 中除一列之外的两个数据框?

Python 数据框 : how to map a new column from existing column

python - 在 Pandas 中转置 MultiIndex

python - 是否有 Python linter 来检查是否缺少 `raise` 关键字?

python - “精确”对象没有属性 'shap_values'

python - 波开 : redirect stderr and stdout to single stream

python - Virtualenv:找不到命令