Sie können map
verwenden, um eine Lambda-Funktion durchführt, dass der Betrieb zu jedem Eintrag in einer Spalte gelten:
import pandas as pd
import xlrd
from datetime import datetime
# Create dummy dataframe
df = pd.DataFrame({
"date": [42369, 42370, 42371, 42372]
})
print df.to_string()
# Convert values into a new column named "converted"
df["converted"] = df["date"].map(lambda x: datetime(*xlrd.xldate_as_tuple(x, 0)))
print df.to_string()
Vor der Umstellung:
date
0 42369
1 42370
2 42371
3 42372
Nach:
date converted
0 42369 2015-12-31
1 42370 2016-01-01
2 42371 2016-01-02
3 42372 2016-01-03
Ist das wonach Sie suchen?
Update:
Um diese Arbeit mit String-Eingaben zu machen, könnten Sie entweder Pandas sagen die Spalte als ints zu behandeln oder schwimmt:
# int
df["converted"] = df["date"].astype(int).map(lambda x: datetime(*xlrd.xldate_as_tuple(x, 0)))
# float
df["converted"] = df["date"].astype(float).map(lambda x: datetime(*xlrd.xldate_as_tuple(x, 0)))
oder werfen nur x
innerhalb int oder float die Lambda-Funktion:
# int
df["converted"] = df["date"].map(lambda x: datetime(*xlrd.xldate_as_tuple(int(x), 0)))
# float
df["converted"] = df["date"].map(lambda x: datetime(*xlrd.xldate_as_tuple(float(x), 0)))
Danke, das ist, was ich suchte, aber meine Dataframe-Spalte wird als Zeichenfolge gespeichert. Wie konvertiere ich die Spalte in Interners oder Floats – Obabs
@Obabs, siehe meine aktualisierte Antwort – Plasma