<p>首先通过<code>zip</code>创建的字典添加<code>rename</code>列,通过<a href="http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.assign.html" rel="nofollow noreferrer">^{<cd3>}</a>和<a href="http://pandas.pydata.org/pandas-docs/stable/generated/pandas.concat.html" rel="nofollow noreferrer">^{<cd4>}</a>添加新列,并使用<a href="http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.sort_index.html" rel="nofollow noreferrer">^{<cd5>}</a>添加<a href="http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.reset_index.html" rel="nofollow noreferrer">^{<cd6>}</a>,为了避免重复索引,请使用<code>drop=True</code>添加<a href="http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.reset_index.html" rel="nofollow noreferrer">^{<cd6>}</a>:</p>
<pre><code>c1 = ['SIBT', 'PLANNED_ARR_HOUR', 'ARRIVAL_FLIGHT_HAUL']
c2 = ['SOBT', 'PLANNED_DEP_HOUR', 'DEPARTURE_FLIGHT_HAUL']
c3 = ['DATETIME','PLANNER_HOUR','FLIGHT_HAUL']
df1 = df.rename(columns=dict(zip(c1, c3)))[c3].assign(TYPE='ARR')
df2 = df.rename(columns=dict(zip(c2, c3)))[c3].assign(TYPE='DEP')
df = pd.concat([df1, df2]).sort_index().reset_index(drop=True)
print (df)
DATETIME PLANNER_HOUR FLIGHT_HAUL TYPE
0 2016-01-01 04:05:00 4 Ultra Long Haul ARR
1 2016-01-01 14:10:00 14 Long Haul DEP
2 2016-01-01 04:25:00 4 Ultra Long Haul ARR
3 2016-01-01 06:30:00 6 Short Haul DEP
4 2016-01-01 05:05:00 5 Long Haul ARR
5 2016-01-01 07:05:00 7 Long Haul DEP
6 2016-01-01 05:20:00 5 Short Haul ARR
7 2016-01-01 10:40:00 10 Long Haul DEP
8 2016-01-01 05:25:00 5 Long Haul ARR
9 2016-01-01 10:50:00 10 Long Haul DEP
</code></pre>
<p>另一种解决方案是<code>lreshape</code>:</p>
<pre><code>df = df.assign(TYPE1='ARR', TYPE2='DEP')
d = {'DATETIME':['SIBT','SOBT'],
'PLANNER_HOUR':['PLANNED_ARR_HOUR','PLANNED_DEP_HOUR'],
'FLIGHT_HAUL':['ARRIVAL_FLIGHT_HAUL','DEPARTURE_FLIGHT_HAUL'],
'TYPE':['TYPE1','TYPE2']}
df = pd.lreshape(df, d)
print (df)
DATETIME PLANNER_HOUR FLIGHT_HAUL TYPE
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
5 2016-01-01 14:10:00 14 Long Haul DEP
6 2016-01-01 06:30:00 6 Short Haul DEP
7 2016-01-01 07:05:00 7 Long Haul DEP
8 2016-01-01 10:40:00 10 Long Haul DEP
9 2016-01-01 10:50:00 10 Long Haul DEP
</code></pre>