如何将for循环的结果转换为pandas数据帧?

gra草

使用Haversine公式计算大圆上的距离,我使用以下代码来计算已知起始位置(使用lat1 / lon1)和已知目的地(使用lat2 / lon2)之间的任何点的坐标:

这是完整的代码:

from math import radians, sin, cos, acos, atan2, sqrt, pi

#enter the following numbers in the corresponding input fields:
#lat1 = starting latitude = 33.95 
#lon1 = starting longitude = -118.40
#lat2 = destination latitude = 40.6333 
#lon2= destination longitude = -73.7833
lat1 = radians(float(input("Starting latitude: ")))
lon1 = radians(float(input("Starting longitude: ")))
lat2 = radians(float(input("Destination latitude: ")))
lon2 = radians(float(input("Destination longitude: ")))

#Haversine formula to calculate the distance, in radians, between starting point and destination:
d = ((6371.01 * acos(sin(lat1)*sin(lat2) + cos(lat1)*cos(lat2)*cos(lon1 - lon2)))/1.852)/(180*60/pi)  

import numpy as np
x = np.arange(0, 1, 0.2)
for f in x:
    A=sin((1-f)*d)/sin(d)
    B=sin(f*d)/sin(d)
    x = A*cos(lat1)*cos(lon1) +  B*cos(lat2)*cos(lon2)
    y = A*cos(lat1)*sin(lon1) +  B*cos(lat2)*sin(lon2)
    z = A*sin(lat1)           +  B*sin(lat2)
    lat_rad=atan2(z,sqrt(x**2+y**2))
    lon_rad=atan2(y,x)
    lat_deg = lat_rad*180/pi
    lon_deg = lon_rad*180/pi
    print('%.2f' %f, '%.4f' %lat_deg, '%.4f' %lon_deg)

我使用该np.arange()函数在0(起始点)和1(目标)之间进行小数迭代f。

for循环的输出为:

0.00 33.9500 -118.4000
0.20 36.6040 -110.2685
0.40 38.6695 -101.6259
0.60 40.0658 -92.5570
0.80 40.7311 -83.2103

其中,第一个数字是分数(f);第二个数字是纬度(lat_deg),第三个数字是经度(lon_deg)。

我的问题是:如何将我的代码输出转换为pandas(3x6)数据帧,数据以3列的形式排列,标题为小数(col1),纬度(col2),经度(col3)?

一旦输出位于熊猫数据框中,我便可以轻松地将数据写入CSV文件。

拉斯·斯考格

你快到了。通过以下修改,您将可以获取CSV:

  1. 将值附加到列表中,而不是打印它们。
  2. 将结果转换为数据框

以下是包含所需更新的代码。我现在已经对此进行了测试,并且可以一直使用到最终的CSV。

import numpy as np
import pandas as pd
from math import radians, sin, cos, acos, atan2, sqrt, pi

# Numbers per your instructions
lat1 = radians(float(33.95))
lon1 = radians(float(-118.40))
lat2 = radians(float(40.6333))
lon2 = radians(float(-73.7833))

#Haversine formula to calculate the distance, in radians, between starting point and destination:
d = ((6371.01 * acos(sin(lat1)*sin(lat2) + cos(lat1)*cos(lat2)*cos(lon1 - lon2)))/1.852)/(180*60/pi)  

x = np.arange(0, 1, 0.2)

# An empty list into which we'll append each list of values
res = []

for f in x:
    A=sin((1-f)*d)/sin(d)
    B=sin(f*d)/sin(d)
    x = A*cos(lat1)*cos(lon1) +  B*cos(lat2)*cos(lon2)
    y = A*cos(lat1)*sin(lon1) +  B*cos(lat2)*sin(lon2)
    z = A*sin(lat1)           +  B*sin(lat2)
    lat_rad=atan2(z,sqrt(x**2+y**2))
    lon_rad=atan2(y,x)
    lat_deg = lat_rad*180/pi
    lon_deg = lon_rad*180/pi
    # Add the desired values, creating a list of lists
    res.append([f, lat_deg, lon_deg])

# Convert the result to a dataframe
res_df= pd.DataFrame(res, columns=['Fraction', 'Latitude', 'Longitude'])

# Voila! You can now save to CSV
res_df.to_csv('coordinates.csv', index=False)   


本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何将numpy数组转换为pandas数据框?

来自分类Dev

如何将数据帧中的NaN转换为NA

来自分类Dev

如何将数据帧转换为时间序列?

来自分类Dev

如何将for循环的结果转换为列表?

来自分类Dev

如何将Pandas DataFrame groupby结果转换为DataFrame?

来自分类Dev

如何将colSums转换为R到数据帧

来自分类Dev

R:如何将数据帧转换为nxn矩阵

来自分类Dev

如何将Spark数据帧转换为Pandas并返回Kedro?

来自分类Dev

如何将XML文件转换为Pandas数据框

来自分类Dev

如何将循环时间序列熊猫数据帧转换为熊猫多索引数据帧

来自分类Dev

如何将DFM转换为保留docvar的数据帧,但?

来自分类Dev

如何将多索引数据转换为数据帧

来自分类Dev

如何将熊猫数据帧转换为NumPy数组?

来自分类Dev

如何将日期时间的数据帧转换为仅时间?基本上删除Python Pandas中的date元素

来自分类Dev

如何将OHLCV命名数据数组转换为numpy数据帧?

来自分类Dev

如何将嵌套字典转换为pandas数据框?

来自分类Dev

如何将numpy数组转换为pandas数据框?

来自分类Dev

如何将合并数据帧转换为合并数据帧?

来自分类Dev

如何将colSums转换为R到数据帧

来自分类Dev

R:如何将数据帧转换为nxn矩阵

来自分类Dev

如何将数据帧转换为 DTM

来自分类Dev

如何将多个元组转换为 Pandas 中的数据帧

来自分类Dev

如何将数组列表转换为 Spark 数据帧

来自分类Dev

如何将数据帧数组转换为单个数据帧?

来自分类Dev

如何将json数据帧转换为其他数据帧

来自分类Dev

如何将R数据帧转换为长格式

来自分类Dev

如何将字典的数据帧转换为数据帧?

来自分类Dev

如何将时间序列数据集转换为 Pandas 数据帧

来自分类Dev

如何将 Pandas 数据帧转换为唯一结构化的嵌套 json

Related 相关文章

  1. 1

    如何将numpy数组转换为pandas数据框?

  2. 2

    如何将数据帧中的NaN转换为NA

  3. 3

    如何将数据帧转换为时间序列?

  4. 4

    如何将for循环的结果转换为列表?

  5. 5

    如何将Pandas DataFrame groupby结果转换为DataFrame?

  6. 6

    如何将colSums转换为R到数据帧

  7. 7

    R:如何将数据帧转换为nxn矩阵

  8. 8

    如何将Spark数据帧转换为Pandas并返回Kedro?

  9. 9

    如何将XML文件转换为Pandas数据框

  10. 10

    如何将循环时间序列熊猫数据帧转换为熊猫多索引数据帧

  11. 11

    如何将DFM转换为保留docvar的数据帧,但?

  12. 12

    如何将多索引数据转换为数据帧

  13. 13

    如何将熊猫数据帧转换为NumPy数组?

  14. 14

    如何将日期时间的数据帧转换为仅时间?基本上删除Python Pandas中的date元素

  15. 15

    如何将OHLCV命名数据数组转换为numpy数据帧?

  16. 16

    如何将嵌套字典转换为pandas数据框?

  17. 17

    如何将numpy数组转换为pandas数据框?

  18. 18

    如何将合并数据帧转换为合并数据帧?

  19. 19

    如何将colSums转换为R到数据帧

  20. 20

    R:如何将数据帧转换为nxn矩阵

  21. 21

    如何将数据帧转换为 DTM

  22. 22

    如何将多个元组转换为 Pandas 中的数据帧

  23. 23

    如何将数组列表转换为 Spark 数据帧

  24. 24

    如何将数据帧数组转换为单个数据帧?

  25. 25

    如何将json数据帧转换为其他数据帧

  26. 26

    如何将R数据帧转换为长格式

  27. 27

    如何将字典的数据帧转换为数据帧?

  28. 28

    如何将时间序列数据集转换为 Pandas 数据帧

  29. 29

    如何将 Pandas 数据帧转换为唯一结构化的嵌套 json

热门标签

归档