如何使数据框进入特定范围

How to make a dataframe into certain rannge

这是我的数据集

Address                                                 Latitude        Longitude
Bandar Udara Sultan Aji Muhammad Sulaiman               -12.658.151     1.168.977.258
Bandar Udara Halim Perdanakusuma                        -62.652.088     1.068.863.459
Bandar Udara Internasional Sultan Mahmud Badaruddin II  -28.947.992     1.047.046.471
Bandar Udara Internasional Zainuddin Abdul Madjid        -8.761.939     1.162.735.566
Bandar Udara Internasional Sultan Syarif Kasim II         4.645.874     1.014.477.217

纬度的取值范围在-10到10之间,经度取值范围在100到200之间,所以我们把它们分开来做标准的经纬度值。

这是我预期的数据集

Address                                                 Latitude        Longitude
Bandar Udara Sultan Aji Muhammad Sulaiman                -1.2658151     116.8977258
Bandar Udara Halim Perdanakusuma                         -6.2652088     106.8863459
Bandar Udara Internasional Sultan Mahmud Badaruddin II   -2.8947992     104.7046471
Bandar Udara Internasional Zainuddin Abdul Madjid        -8.761939      116.2735566
Bandar Udara Internasional Sultan Syarif Kasim II         4.645874      101.4477217

这是一个非常定制的解决方案,它考虑到您的坐标具有特定范围这一事实:更具体地说,经度总是在小数点前有三位数字,而纬度总是有一位(减号是可选的)。

基本上,您首先删除所有点,然后分别在经度和纬度的 3 位或 1 位数字后插入一个点。

import numpy as np
import pandas as pd

# Longitude
df['Longitude'] = df['Longitude'].str.replace('\.', '', regex=True)
df['Longitude'] = (df['Longitude'].str[:3] + '.' + df['Longitude'].str[3:]).astype(float)

# Latitude
negative_lat = df['Latitude'].str.startswith('-')
df['Latitude'] = df['Latitude'].str.replace('\.|-', '', regex=True)
df['Latitude'] = (df['Latitude'].str[:1] + '.' + df['Latitude'].str[1:]).astype(float)
df['Latitude'] = np.where(negative_lat, -1 * df['Latitude'], df['Latitude'])

print(df.dtypes)
print(df)
# Address       object
# Latitude     float64
# Longitude    float64
# dtype: object
#                                              Address  Latitude   Longitude
# 0          Bandar Udara Sultan Aji Muhammad Sulaiman -1.265815  116.897726
# 1                   Bandar Udara Halim Perdanakusuma -6.265209  106.886346
# 2  Bandar Udara Internasional Sultan Mahmud Badar... -2.894799  104.704647
# 3  Bandar Udara Internasional Zainuddin Abdul Madjid -8.761939  116.273557
# 4  Bandar Udara Internasional Sultan Syarif Kasim II  4.645874  101.447722