在python中重塑大熊猫数据框

时间:2019-02-20 12:25:26

标签: python pandas dataframe

我正在尝试重塑如下所示的数据框。有些道路具有多个协调和位置点。我希望每条道路上只有一行,并且所有数据点都紧挨着。您可以在此下方的数据框中找到所需的输出。保持索引并不重要。

如果您知道如何解决此问题,那就太好了!

index   road          lrp      lat                 lon
1346    N1           LRP467    20.862972        92.298083
1347    N1           LRPE      20.862917        92.298083
1348    N101         LRPS      23.454139        91.212861
1349    N101         LRPSa     23.461889        91.212000

所需的输出:

index   road          lrp1     lat1         lon1        lrp2  lat2          lon2
1346    N1           LRP467    20.862972    92.298083   LRPE  20.862917     92.298083
1348    N101         LRPS      23.454139    91.212861  LRPSa  23.461889     91.212000

我的实际数据框比此示例大得多(超过10000条记录),因此,如果您知道可以应用于较大数据框的解决方案,将非常有帮助。

1 个答案:

答案 0 :(得分:3)

假设index是索引而不是列:

m= df.groupby(['road']).cumcount() + 1
df = df.set_index(['road', m]).unstack().sort_index(1, level=1)
df.columns = ['_'.join(map(str,i)) for i in df.columns]
print(df.reset_index())

   road      lat_1      lon_1   lrp_1      lat_2      lon_2  lrp_2
0    N1  20.862972  92.298083  LRP467  20.862917  92.298083   LRPE
1  N101  23.454139  91.212861    LRPS  23.461889  91.212000  LRPSa