Der Code erstellt die Spalte "defect_present"
im DataFrame sensor_df
, um anzuzeigen, ob für jede Zeile (d. h. für jeden Datensatz) ein Defekt vorliegt oder nicht. Hier ist eine detaillierte Erklärung:
sensor_df["defect_present"] = sensor_df.apply(
lambda row: 1 if row.get("mileage") is not None and any(
abs(row["mileage"] - defect.get("mileage", 0)) <= 50
for _, defect in defects_df.iterrows() if defect["vehicleId"] == row["vehicleId"]
) else 0,
axis=1
)
sensor_df.apply(..., axis=1)
:
apply
wird auf sensor_df
angewendet, um jede Zeile (Datensatz) einzeln zu verarbeiten (axis=1
).lambda row: ...
):
defect_present
den Wert 1
erhält, wenn ein Defekt vorhanden ist, und 0
, wenn keiner vorliegt.row.get("mileage") is not None
:
mileage
(Kilometerstand) für die aktuelle Zeile nicht None
ist.mileage
None
ist, wird defect_present
automatisch 0
.any(...)
:
any(...)
prüft, ob mindestens eine Übereinstimmung im DataFrame defects_df
gefunden wird.any(...)
wird eine Schleife (for _, defect in defects_df.iterrows()
) durch alle Defekte in defects_df
ausgeführt.vehicleId
des Defekts mit dem vehicleId
der aktuellen Zeile in sensor_df
übereinstimmt undrow["mileage"]
) und dem Kilometerstand des Defekts (defect.get("mileage", 0)
) kleiner oder gleich 50 ist.any(...)
True
und defect_present
wird auf 1
gesetzt.defect_present
den Wert 1
zu.defect_present
auf 0
gesetzt.Dieser Code erstellt eine Spalte defect_present
, die für jede Zeile angibt, ob ein Defekt im Kilometerstand-Bereich ±50 vorhanden ist.
Autor: Jörg Harzmann
Dieser Inhalt ist unter einer CC BY-NC Lizenz veröffentlicht. Jeglicher Quellcode ist urheberrechtlich geschützt!