Python 通过Pandas数据循环,并通过2个输入找到最大值过滤器(lat-long)

Python 通过Pandas数据循环,并通过2个输入找到最大值过滤器(lat-long),python,pandas,numpy,dataframe,Python,Pandas,Numpy,Dataframe,我们有一些来自NASA api的关于最亮恒星的数据,根据给定的数据,我们必须找到从某个位置可见的最亮恒星,我们必须经过的位置是lat-long。能量最大的那一排将是最亮的恒星 import requests import json import pandas as pd results=requests.get('https://ssd-api.jpl.nasa.gov/fireball.api?date-min=2017-01-01&date-max=2020-01-01&r

我们有一些来自NASA api的关于最亮恒星的数据,根据给定的数据,我们必须找到从某个位置可见的最亮恒星,我们必须经过的位置是lat-long。能量最大的那一排将是最亮的恒星

import requests
import json
import pandas as pd

results=requests.get('https://ssd-api.jpl.nasa.gov/fireball.api?date-min=2017-01-01&date-max=2020-01-01&req-loc=true&limit=10')

parsed_data=results.text

final_data=json.loads(parsed_data)

#print(type(final_data["fields"]))
#print(type(final_data["data"]))

df = pd.DataFrame(final_data["data"],columns = final_data["fields"]) 
print(df.head())


                  date energy impact-e   lat lat-dir    lon lon-dir   alt   vel  
0  2019-12-21 14:30:52    6.5     0.21  56.5       N  147.6       W  35.5  22.2    
1  2019-12-11 01:19:11    3.9     0.13  47.7       N  161.7       E    37  17.8    
2  2019-12-06 10:19:57    4.6     0.15   3.3       S   37.7       W  19.5  None    
3  2019-12-03 06:46:27    4.2     0.14   5.6       N   52.2       W  61.5  None    
4  2019-11-28 20:30:54    2.7    0.095  35.7       N   31.7       W    35  13.0 

我需要一种循环技术,将输入作为lat-long,并根据该lat-long找到最亮的星。

找到能量最大的行,其中
lat
long
匹配:

import requests
import json
import pandas as pd

results=requests.get('https://ssd-api.jpl.nasa.gov/fireball.api?date-min=2017-01-01&date-max=2020-01-01&req-loc=true&limit=10')

parsed_data=results.text

final_data=json.loads(parsed_data)

#print(type(final_data["fields"]))
#print(type(final_data["data"]))

df = pd.DataFrame(final_data["data"],columns = final_data["fields"]) 
print(df.head())


                  date energy impact-e   lat lat-dir    lon lon-dir   alt   vel  
0  2019-12-21 14:30:52    6.5     0.21  56.5       N  147.6       W  35.5  22.2    
1  2019-12-11 01:19:11    3.9     0.13  47.7       N  161.7       E    37  17.8    
2  2019-12-06 10:19:57    4.6     0.15   3.3       S   37.7       W  19.5  None    
3  2019-12-03 06:46:27    4.2     0.14   5.6       N   52.2       W  61.5  None    
4  2019-11-28 20:30:54    2.7    0.095  35.7       N   31.7       W    35  13.0 
def查找最亮的恒星(df、lat、lon):
尝试:
idx=df[(df.lat.eq(lat))和(df.lon.eq(lon))].energy.idxmax()
返回df.loc[idx]
除:
返回“在数据帧中找不到lat和long”
如果
lat
lon
与数据帧中的a行不匹配,它将返回错误消息


例如:

df[['energy','lat','lon']]=df[['energy','lat','lon']].astype(float)
寻找最亮的恒星(df,56.5147.6)
输出:

date        2019-12-21 14:30:52
energy                      6.5
impact-e                   0.21
lat                        56.5
lat-dir                       N
lon                       147.6
lon-dir                       W
alt                        35.5
vel                        22.2
Name: 0, dtype: object

您可以在函数内部轻松使用,如:

lat=float(输入('哪个是纬度?'))
lon=float(输入('哪个是经度?'))

您可能也需要使用。

是否需要将多个
lat long
作为输入?还是只有一个?