Ich habe einen Code, der bisher gut funktionierte, wenn ich nur einen Wert auslesen wollte:
Code: Alles auswählen
#Lade Datei mit Device ID
df = pd.read_excel ('Device_ID_Zählerstände.xlsx', usecols = "A:F")
#API-URL für Abfrage
base_url = "https://smart-me.com:443/api/ValuesInPast/"
date = "03.31.2022"
ID = "38a865fc-b8c9-e436-5d2f-71746d3efba6"
url = base_url + ID + "?date=" + date
Benutzername = 'herreneggB21@gmx.ch'
Passwort = '6417-B21'
api_url = base_url + ID + "?date=" + date
r = requests.get(api_url, auth=(Benutzername, Passwort))
data = r.json()
#Zählerstand auslesen
Zählerstand_all = data['Values'][0]
Zählerstand1 = int(Zählerstand_all['Value'])
DeviceID = data['DeviceId']
#ID_name = df['Wohnung_Anlage']
#Mieter = df['Mieter']
#Werte in Liste schreiben
ValuesinPast = {'DeviceID': ID, 'Date': date, 'Zählerstand':Zählerstand1}
df2 = pd.DataFrame(ValuesinPast, index=[0])
#Werte zu bestehender Liste hinzufügen
joined_df = pd.merge(df,
df2,
on = "DeviceID",
how = "right")
joined_df
#Als Excel speichern
joined_df.to_excel("Zählerstand per " + date +".xlsx")
Wenn ich das ganze aber nun in einem Loop machen möchte, d.h. ich habe eine Liste mit den Geräte-Nummern, und er soll mir die Werte für all diese Gerätenumemmern auslesen, dann kriege ich zwar in Jupiter Notebook diese Liste, aber am Ende der Liste kommt dann die Fehlermeldung: Expecting value: line 1 column 1 (char 0).
Keine Ahnung was ich falsch mache.
Der Code ist sicher auch viel zu kompliziert geschrieben - bin ein absoluter Beginner in Python!
Wäre cool wenn mir jemand weiterhelfen könnte!
Gruss
Patricia
Code: Alles auswählen
import requests
import pandas as pd
import json
#Lade Datei mit Device ID
df = pd.read_excel ('Device_ID_Zählerstände.xlsx', usecols = "A:F")
#Spalte DeviceID für spätere Verwendung
DeviceID = df["DeviceID"]
#Datum manuell setzen
date = "03.31.2022"
#Loop durch alle DeviceID um Zählerwerte aus API auszulesen
for x in DeviceID:
#API-URL für Abfrage
base_url = "https://smart-me.com:443/api/ValuesInPast/"
url = base_url + x + "?date=" + date
Benutzername = 'xxx'
Passwort = 'xxx'
r = requests.get(url, auth=(Benutzername, Passwort))
data = r.json()
#Zählerstand auslesen
Zählerstand_all = data['Values'][0]
Zählerstand1 = int(Zählerstand_all['Value'])
#Werte in Liste schreiben
ValuesinPast = {'DeviceID': x, 'Date': date, 'Zählerstand':Zählerstand1}
df2 = pd.DataFrame(ValuesinPast, index=[0])
#Werte zu bestehender Liste hinzufügen
joined_df = pd.merge(df,
df2,
on = "DeviceID",
how = "right")
#Liste erstellen mit Werten
print(joined_df)
#Als Excel speichern
joined_df.to_excel("Zählerstand per " + date +".xlsx")