Ich bin verwirrt darüber, wenn ich eine Funktion auf ein Array-Element anwenden kann, aber nicht auf das gesamte Array. Zum Beispiel:Warum funktioniert Funktion auf Element, aber nicht auf Array?
Ich habe einen Datenrahmen von Zeitstempeln, wo ich nur die einzigartigen Daten und den Tag von Wochen in einen Datenrahmen bekommen möchte. Ziehen die Daten aus ist recht einfach:
dates_only = df.dtime.dt.date.unique()
an diesem Punkt:
print type(dates_only) -> <type 'numpy.ndarray'>
print type(dates_only[0]) -> <type 'datetime.date'>
print dates_only[0].weekday() -> 4
aber ich kann durch die Anwendung der Wochentag Funktion eine neue Serie nicht schaffen:
dow = dates_only.weekday()
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-10-76986b9b07a2> in <module>()
----> 4 dow = dates_only.weekday()
AttributeError: 'numpy.ndarray' object has no attribute 'weekday'
Do I muss das NDarray irgendwie werfen oder sollte ich diese in einer Schleife verarbeiten wie:
for i in range(len(dates_only)):
dow[i] = dates_only[i].weekday()
Ich denke, es wird funktionieren, aber es scheint nur so falsch ...
Vielen Dank für die Suche!
Im Allgemeinen sind Python-Funktionen * nicht * vektorisiert. Vektorisierung ist eine Eigenschaft von 'numpy' und numpy-verwandten Bibliotheken (z.B.' Pandas'). Jezrael wies darauf hin, dass dieses besondere Merkmal in "Pandas" vektorisiert implementiert wurde, aber wenn es nicht so wäre, müssten Sie eine Schleife machen. –