Wenn Sie die Spalte von Strings in einer Zeitreihe zu konvertieren, können Sie die dt.strftime
method verwenden:
import numpy as np
import pandas as pd
nan = np.nan
df = pd.DataFrame({'TBD': [nan, nan, nan], 'TBD.1': [nan, nan, nan], 'TBD.2': [nan, nan, nan], 'TimeStamp': ['2016/06/08 17:19:53', '2016/06/08 17:19:54', '2016/06/08 17:19:54'], 'Value': [0.062941999999999998, 0.062941999999999998, 0.062941999999999998]})
df['TimeStamp'] = pd.to_datetime(df['TimeStamp']).dt.strftime('%m/%d/%Y %H:%M:%S')
print(df)
ergibt
TBD TBD.1 TBD.2 TimeStamp Value
0 NaN NaN NaN 06/08/2016 17:19:53 0.062942
1 NaN NaN NaN 06/08/2016 17:19:54 0.062942
2 NaN NaN NaN 06/08/2016 17:19:54 0.062942
Da Sie eine Spalte konvertieren möchten von Strings zu einer anderen (anderen) Stringsspalte können Sie auch die vektorisierte Methode str.replace
verwenden:
import numpy as np
import pandas as pd
nan = np.nan
df = pd.DataFrame({'TBD': [nan, nan, nan], 'TBD.1': [nan, nan, nan], 'TBD.2': [nan, nan, nan], 'TimeStamp': ['2016/06/08 17:19:53', '2016/06/08 17:19:54', '2016/06/08 17:19:54'], 'Value': [0.062941999999999998, 0.062941999999999998, 0.062941999999999998]})
df['TimeStamp'] = df['TimeStamp'].str.replace(r'(\d+)/(\d+)/(\d+)(.*)', r'\2/\3/\1\4')
print(df)
seit
In [32]: df['TimeStamp'].str.replace(r'(\d+)/(\d+)/(\d+)(.*)', r'\2/\3/\1\4')
Out[32]:
0 06/08/2016 17:19:53
1 06/08/2016 17:19:54
2 06/08/2016 17:19:54
Name: TimeStamp, dtype: object
Diese Regex verwendet Stücke der Zeichenfolge , ohne zuerst die Zeichenfolge als Datum Parsen neu zu ordnen. Dies ist schneller als die erste Methode (hauptsächlich weil es den Parsing-Schritt überspringt), aber es hat auch den Nachteil, nicht zu überprüfen, dass die Datumszeichenfolgen gültige Daten sind.
Hallo @unutbu das hat funktioniert. Ja, ich bemerkte die Langsamkeit beim Ausführen der Zeile, auch wenn es fertig war. Ich habe es mit pd.to_datetime in datetime umgewandelt und es war sehr langsam im Vergleich zu df ['TimeStamp'] war eine Zeichenkette. Ist dieses Verfahren schneller als das Anwenden der str-Funktion über eine Schleife? speziell für einen Datenrahmen für Millionen von Datensätzen, eine Schleife zu machen, denke ich, ist keine gute Idee. – racekiller
Rechts. Vermeide die Python-Schleife, wenn du kannst. Die Verwendung von 'DatetimeIndex.strftime' ist * viel * schneller als die Verwendung einer Python-Schleife, das Analysieren jeder Datumszeichenkette als Datum und das Aufrufen von' strftime'. – unutbu
@unutbu Sie brauchen den 'DatetimeIndex' nicht,' strftime' ist auch vom '.dt' Accessor verfügbar. – joris