I have converted a feature class (polylines) to a numpy array and have expoded the polylines to vertices using the "explode_to_points" method. I would like to convert the output numpy array to a pandas dataframe that will replicate the line segments that make up the polyline so that I land up with the following columns:

The table above was achieved by using "Split Line At Vertices". The fields "STElev" and "EndElev" are the Start Elevation and End Elevation of the line segments determined using "Calculate Geometry". The field "STElevation" and "EndElevation" is the change in elevation determined by subtracting the elevation from the first "STElev" which in this case is 355.8495.
The output numpy array from converting my feature class (polylines) and exploding the features to vertices is:

The values are:
[(DrainID, X, Y, Z)....] for each vertice
<SPAN class="string token">'''
Created on 01 Jul 2017
@author: PeterW
'''</SPAN>
<SPAN class="comment token"># import modules and site-packages</SPAN>
<SPAN class="keyword token">import</SPAN> numpy <SPAN class="keyword token">as</SPAN> np
<SPAN class="keyword token">import</SPAN> pandas <SPAN class="keyword token">as</SPAN> pd
<SPAN class="keyword token">from</SPAN> pathlib <SPAN class="keyword token">import</SPAN> Path
<SPAN class="keyword token">import</SPAN> arcpy
<SPAN class="comment token"># set environment settings</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>env<SPAN class="punctuation token">.</SPAN>overwriteOutput <SPAN class="operator token">=</SPAN> <SPAN class="token boolean">True</SPAN>
<SPAN class="comment token"># check out extensions</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>CheckOutExtension<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"3D"</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">def</SPAN> <SPAN class="token function">longestflowpath_3d</SPAN><SPAN class="punctuation token">(</SPAN>dtm<SPAN class="punctuation token">,</SPAN> lfp_2d<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">:</SPAN>
<SPAN class="string token">"""Generate LongestFlowPath 3D
from LongestFlowPath 2D and DTM"""</SPAN>
output_gdb <SPAN class="operator token">=</SPAN> str<SPAN class="punctuation token">(</SPAN>Path<SPAN class="punctuation token">(</SPAN>lfp_2d<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">.</SPAN>parents<SPAN class="punctuation token">[</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">)</SPAN>
lfp_3d <SPAN class="operator token">=</SPAN> <SPAN class="string token">"{0}\\{1}"</SPAN><SPAN class="punctuation token">.</SPAN>format<SPAN class="punctuation token">(</SPAN>output_gdb<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"lfp_3d"</SPAN><SPAN class="punctuation token">)</SPAN>
lfp_3d <SPAN class="operator token">=</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>InterpolateShape_3d<SPAN class="punctuation token">(</SPAN>dtm<SPAN class="punctuation token">,</SPAN> lfp_2d<SPAN class="punctuation token">,</SPAN> lfp_3d<SPAN class="punctuation token">,</SPAN> vertices_only<SPAN class="operator token">=</SPAN><SPAN class="token boolean">True</SPAN><SPAN class="punctuation token">)</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>FlipLine_edit<SPAN class="punctuation token">(</SPAN>lfp_3d<SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">return</SPAN> lfp_3d
<SPAN class="keyword token">def</SPAN> <SPAN class="token function">area_under_profile</SPAN><SPAN class="punctuation token">(</SPAN>lfp_3d<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">:</SPAN>
<SPAN class="string token">"""Determine the Equal Area Slope
for each Drainage Area's Longest
Flowpath"""</SPAN>
arr <SPAN class="operator token">=</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>da<SPAN class="punctuation token">.</SPAN>FeatureClassToNumPyArray<SPAN class="punctuation token">(</SPAN>lfp_3d<SPAN class="punctuation token">,</SPAN> <SPAN class="punctuation token">[</SPAN><SPAN class="string token">"DrainID"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"SHAPE@X"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"SHAPE@Y"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"SHAPE@Z"</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">,</SPAN> explode_to_points<SPAN class="operator token">=</SPAN><SPAN class="token boolean">True</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="comment token"># @UndefinedVariable</SPAN>
<SPAN class="keyword token">print</SPAN><SPAN class="punctuation token">(</SPAN>arr<SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">def</SPAN> <SPAN class="token function">equal_area_slope</SPAN><SPAN class="punctuation token">(</SPAN>dtm<SPAN class="punctuation token">,</SPAN> lfp_2d<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">:</SPAN>
<SPAN class="string token">"""Determine the Equal Area Slope
for each Drainage Area's Longest
Flowpath"""</SPAN>
lfp_3d <SPAN class="operator token">=</SPAN> longestflowpath_3d<SPAN class="punctuation token">(</SPAN>dtm<SPAN class="punctuation token">,</SPAN> lfp_2d<SPAN class="punctuation token">)</SPAN>
area_under_profile<SPAN class="punctuation token">(</SPAN>lfp_3d<SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">if</SPAN> __name__ <SPAN class="operator token">==</SPAN> <SPAN class="string token">"__main__"</SPAN><SPAN class="punctuation token">:</SPAN>
dtm <SPAN class="operator token">=</SPAN> r<SPAN class="string token">"E:\Projects\2016\G113665\geoHydro\DTM2\raw1"</SPAN>
lfp_2d <SPAN class="operator token">=</SPAN> r<SPAN class="string token">"E:\Projects\2016\G113665\geoHydro\Model02\Results.gdb\LongestFlowPath_2D_Orig"</SPAN>
equal_area_slope<SPAN class="punctuation token">(</SPAN>dtm<SPAN class="punctuation token">,</SPAN> lfp_2d<SPAN class="punctuation token">)</SPAN><SPAN class="line-numbers-rows"><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN></SPAN>My current Python Module
How can I convert the current numpy array to a pandas dataframe that will restructure the vertices (DrainID, X, Y, Z) to (DrainID, STElevation (change in elevation), EndElevation (change in elevation), DistM (Length of segment)?