Python 通过Pandas数据循环,并通过2个输入找到最大值过滤器(lat-long)
我们有一些来自NASA api的关于最亮恒星的数据,根据给定的数据,我们必须找到从某个位置可见的最亮恒星,我们必须经过的位置是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
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
作为输入?还是只有一个?