【问题标题】:Pandas: How to split on multiple delimiters?Pandas:如何拆分多个分隔符?
【发布时间】:2020-09-27 18:55:29
【问题描述】:

我的数据框在单列 (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='')

【问题讨论】:

  • @YukiShioriii 谢谢,但我已经尝试过这个,但它不起作用
  • 你试过什么?使用str.split 的答案不在您提供的代码中。
  • @YukiShioriii 我已经尝试了 100 个答案,但无法添加所有问题,对吧?
  • 添加 str.split 一个

标签: python pandas dataframe


【解决方案1】:

让我们使用extractallCoordinates列中提取latlongalt,然后用unstack对其进行重塑,最后将joinID和@987654330列一起提取@:

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

【讨论】:

    猜你喜欢
    • 2019-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-07
    相关资源
    最近更新 更多