in Pandas zu verbinden und zu verketten Ich lese csv's von der URL und ich möchte einen eindeutigen Datenrahmen erstellen. Die CSVs entsprechen einer Zeitreihe von Messungen für einen Parameter für eine eindeutige Position (z. B. ist jede URL einer Position und einem eindeutigen Parameter zugeordnet).Wie in Pandas beim Lesen von CSV von URL
parameter = ['pm10','pm2.5','o3','no2']
location = [ 'Nabel_LUG', 'Nabel_MAG']
urls = []
dfs = []
CSV_URL = 'http://www.oasi.ti.ch/web/rest/measure/csv?domain=air&resolution=y¶meter={}&from=2007-01-01&to=2017-04-28&location={}'
for l in location:
for p in parameter:
url = CSV_URL.format(p, l)
urls.append(url)
urls
hier ist eine Liste der URL, von der ich die csv des bekommen.
dfs = [(pd.read_csv(url, comment='#', sep=';', usecols=[0, 1], index_col='data')) for url in urls]
result_pm10 = pd.concat(dfs, keys=location)
result_pm10
ist ein Datenrahmen, der alle Standort der Zeitreihe für einen bestimmten Parameter zB enthält: so etwas wie dieses nur
data PM10 O3 NO2
Nabel_LUG 01.07.2011 01:00 21.0 683.0 34.0
Nabel_LUG 01.07.2012 01:00 21.0 668.0 32.0
Nabel_LUG 01.07.2013 01:00 18.0 707.0 31.0
Nabel_LUG 01.07.2014 01:00 15.0 366.0 29.0
Nabel_LUG 01.07.2015 01:00 18.0 804.0 30.0
Nabel_LUG 01.07.2016 01:00 16.0 550.0 28.0
Nabel_LUG 01.07.2017 01:00 24.0 45.0 37.0
Nabel_MAG 01.07.2011 01:00 24.0 540.0 20.0
Nabel_MAG 01.07.2012 01:00 21.0 432.0 19.0
Nabel_MAG 01.07.2013 01:00 19.0 494.0 18.0
Nabel_MAG 01.07.2014 01:00 15.0 259.0 20.0
Nabel_MAG 01.07.2015 01:00 19.0 596.0 18.0
Nabel_MAG 01.07.2016 01:00 15.0 363.0 21.0
Nabel_MAG 01.07.2017 01:00 22.0 65.0 24.0
data PM10
Nabel_LUG 01.07.2011 01:00 21.0
Nabel_LUG 01.07.2012 01:00 21.0
Nabel_LUG 01.07.2013 01:00 18.0
Nabel_LUG 01.07.2014 01:00 15.0
Nabel_LUG 01.07.2015 01:00 18.0
Nabel_LUG 01.07.2016 01:00 16.0
Nabel_LUG 01.07.2017 01:00 24.0
Nabel_MAG 01.07.2011 01:00 24.0
Nabel_MAG 01.07.2012 01:00 21.0
Nabel_MAG 01.07.2013 01:00 19.0
Nabel_MAG 01.07.2014 01:00 15.0
Nabel_MAG 01.07.2015 01:00 19.0
Nabel_MAG 01.07.2016 01:00 15.0
Nabel_MAG 01.07.2017 01:00 22.0
Ich möchte bekommen, aber ich bin dazu in der Lage, dies zu tun, indem Sie den obigen Code für jeden Parameter separat wiederholen und dann etwas wie
tundf_parameter = [result_pm10, result_pm25, result_o3, result_no2]
result = pd.concat(df_parameter, axis=1)
Es gibt eine Möglichkeit, dies auf effizientere Weise zu tun (vor allem, wenn es viel mehr Parameter gibt)?
Es scheint wie für jeden Parameter eine andere URL zugreifen, wobei in diesem Fall glaube ich nicht, dass es eine einfachere/effizientere Lösung als die sein, die Sie vorgeschlagen. – Robbie