pandas按行读写excel文件示例:将经纬度坐标转换为墨卡托坐标

        一般情况下,程序读取表格的思路是按列读取并处理。假如我们现在需要按行读取Excel表格数据并处理(将结果置于另一个表格中),应该如何做呢?这里为大家给出一个例子,这里按行读取-->处理-->写入的思路以供参考。

使用库:pandas, numpy

Python版本:13.1

在原始表格里,我们有一些经纬度坐标的数据:(这里的坐标为海淀区附近的一些坐标,无实际含义)

现在已有一个转换坐标的函数(存于Lat2Mercator.py文件中),函数Lat2Mercator需要两个输入:经度和纬度,并输出一个列表[x,y],分别表示转换后的墨卡托坐标。

import numpy as np

earthRad = 6378137.0 # 地球半径
def Lat2Mercator(lng, lat):
    x = lng * np.pi / 180 * earthRad
    a = lat * np.pi / 180
    y = earthRad / 2 * np.log((1 + np.sin(a)) / (1.0 - np.sin(a)))
    return [x,y]

按行读取表格中的数据,每行处理之后直接写入墨卡托坐标.xlsx文件中:

import numpy as np
import pandas as pd
from Lat2Mercator import Lat2Mercator

file_name = "经纬度坐标.xlsx"
data = pd.read_excel(file_name, header = 0, usecols = [0,1])
data = data.to_numpy()  # DataFrame转换为numpy数组形式

lng = data[:, :1]  # 经度
lat = data[:, 1:]  # 纬度

# 创建写入的新表格信息
x, y = Lat2Mercator(lng, lat)
# 将经纬度的两列信息拼接为一个矩阵
Mer_xy = np.hstack((x, y))

# 创建输出墨卡托坐标的Excel表格
name = pd.DataFrame(columns=['x', 'y'])
name.to_excel('墨卡托坐标.xlsx', index=False)
print("墨卡托坐标.xlsx文件已创建成功!")

data_out = pd.DataFrame(Mer_xy)
writer = pd.ExcelWriter('墨卡托坐标.xlsx', engine='openpyxl', mode='a', if_sheet_exists='overlay')
data_out.to_excel(excel_writer=writer, sheet_name='Sheet1', startrow=1, startcol=0, header=False, index=False)
writer._save()
print("写入完成")

运行结果:

以上就完成了对Excel表格的按行读取和处理。

希望本期内容的思路和方法对大家有所帮助。祝大家学习愉快!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值