import math import geopandas as gpd import pandas as pd import matplotlib.pyplot as plt import os column_names = ['CARDNO','RECDTIME','STATIONNAME','LONGITUDE','LATITUDE','DATE','LINENAME','STATIONNAME_GETOFF'] data = pd.read_csv("E:\\Jupyter Notebook\\20230526\\wlmq20190417\\0\\20190417.csv", usecols=column_names) data = data.rename(columns={'LONGITUDE': 'SLONGITUDE','LATITUDE': 'SLATITUDE'}) column_names1 = ['NAME', 'PATHNAME', 'LONGITUDE', 'LATITUDE', 'LINENAME'] stop = pd.read_csv("E:\\Jupyter Notebook\\20230526\\站点.csv", usecols=column_names1) stop = stop[stop['PATHNAME'] == '上行'] stop = stop.rename(columns={'LONGITUDE': 'ELONGITUDE','LATITUDE': 'ELATITUDE'}) 现在在data中的STATIONNAEM_GETOFF与stop中的NAME对比,然后将stop中的SLONGITUDE、SLATITUDE加到data中
时间: 2023-08-20 10:06:03 浏览: 98
可以使用`pd.merge()`方法将`data`和`stop`两个DataFrame对象进行合并,并根据`STATIONNAME_GETOFF`和`NAME`两列进行匹配。然后,可以将`ELONGITUDE`和`ELATITUDE`两列的值添加到`data`中,以便与`SLONGITUDE`和`SLATITUDE`进行比较。以下是示例代码:
```python
import math
import geopandas as gpd
import pandas as pd
import matplotlib.pyplot as plt
import os
# 读取数据文件
column_names = ['CARDNO', 'RECDTIME', 'STATIONNAME', 'LONGITUDE', 'LATITUDE', 'DATE', 'LINENAME', 'STATIONNAME_GETOFF']
data = pd.read_csv("E:\\Jupyter Notebook\\20230526\\wlmq20190417\\0\\20190417.csv", usecols=column_names)
data = data.rename(columns={'LONGITUDE': 'SLONGITUDE', 'LATITUDE': 'SLATITUDE'})
# 读取站点文件
column_names1 = ['NAME', 'PATHNAME', 'LONGITUDE', 'LATITUDE', 'LINENAME']
stop = pd.read_csv("E:\\Jupyter Notebook\\20230526\\站点.csv", usecols=column_names1)
stop = stop[stop['PATHNAME'] == '上行']
stop = stop.rename(columns={'LONGITUDE': 'ELONGITUDE', 'LATITUDE': 'ELATITUDE'})
# 合并两个DataFrame对象,并添加经纬度差值列
merged_data = pd.merge(data, stop, left_on='STATIONNAME_GETOFF', right_on='NAME', how='inner')
merged_data['LONGITUDE_DIFF'] = merged_data['SLONGITUDE'] - merged_data['ELONGITUDE']
merged_data['LATITUDE_DIFF'] = merged_data['SLATITUDE'] - merged_data['ELATITUDE']
# 输出结果
print(merged_data.head())
```
在上面的代码中,`pd.merge()`方法用于将`data`和`stop`两个DataFrame对象进行合并,并根据`STATIONNAME_GETOFF`和`NAME`两列进行匹配。这里使用了`left_on`和`right_on`参数来指定匹配的列名,`how`参数指定合并方式为`inner`。然后,使用`SLONGITUDE`和`ELONGITUDE`两列的值计算经度差值,并使用`SLATITUDE`和`ELATITUDE`两列的值计算纬度差值,将结果保存在`LONGITUDE_DIFF`和`LATITUDE_DIFF`两列中。
需要注意的是,合并后的结果保存在`merged_data`变量中,可以根据需要进行进一步的处理和分析。
阅读全文