Pandas:如何在多个分隔符上拆分?

2024-09-28 05:25:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个数据框架,它在单个列(coordinates)中包含纬度、经度和海拔,我想将coordinates列拆分为三列(纬度、经度和海拔)

df:

ID                                                         Coordinates                                                      Region  
1     latitude_degrees: 52.00755721100514\nlongitude_degrees: 12.565129548994266\naltitude_meters: 185.23616827199143\n     Europe   
2     latitude_degrees: 52.00755721100514\nlongitude_degrees: 12.565129548994266\naltitude_meters: 185.23616827199143\n     Europe   
3     latitude_degrees: 52.00755721100514\nlongitude_degrees: 12.565129548994266\naltitude_meters: 185.23616827199143\n     Europe   
4     latitude_degrees: 52.00755721100514\nlongitude_degrees: 12.565129548994266\naltitude_meters: 185.23616827199143\n     Europe   
5     latitude_degrees: 52.00755721100514\nlongitude_degrees: 12.565129548994266\naltitude_meters: 185.23616827199143\n     Europe  

预期产出:

ID           lat                lon                     alt             Region  
1      52.00755721100514  12.565129548994266     185.23616827199143     Europe   
2      52.00755721100514  12.565129548994266     185.23616827199143     Europe   
3      52.00755721100514  12.565129548994266     185.23616827199143     Europe   
4      52.00755721100514  12.565129548994266     185.23616827199143     Europe   
5      52.00755721100514  12.565129548994266     185.23616827199143     Europe 

我尝试的是:

我试图首先在:的基础上拆分列,但它不起作用:

df.loc[df['Coordinates'].isin(["latitude_degrees", "longitude_degrees"])]= ""

我还试图替换文本,但它不起作用:

df.Coordinates.replace(to_replace=['latitude_degrees','longitude_degrees'],value='')

Tags: iddfregiondegreeseuropelatitudecoordinates纬度
1条回答
网友
1楼 · 发布于 2024-09-28 05:25:13

让我们使用^{}Coordinates列中提取latlongalt,然后unstack对其进行重塑,最后join使用IDRegion列对其进行重构:

c = df['Coordinates'].str.extractall(r'([\d.]+)')[0].unstack()
d = df[['ID', 'Region']].join(c.set_axis(['lat', 'long', 'alt'], 1))

   ID  Region                lat                long                 alt
0   1  Europe  52.00755721100514  12.565129548994266  185.23616827199143
1   2  Europe  52.00755721100514  12.565129548994266  185.23616827199143
2   3  Europe  52.00755721100514  12.565129548994266  185.23616827199143
3   4  Europe  52.00755721100514  12.565129548994266  185.23616827199143
4   5  Europe  52.00755721100514  12.565129548994266  185.23616827199143

相关问题 更多 >

    热门问题