0
我有從使用pd.read_sql_query()從SQL中提取數據構建的數據框。我有一列有日期,但以excel通用數字格式。如何將此列轉換爲日期時間對象。將包含Excel常規數字的pandas數據框列轉換爲datetime對象
我可以轉換一個值與xlrd庫,但尋找轉換整個列的最佳方式。 datetime_value =日期時間(* xlrd.xldate_as_tuple(42369,0))
我有從使用pd.read_sql_query()從SQL中提取數據構建的數據框。我有一列有日期,但以excel通用數字格式。如何將此列轉換爲日期時間對象。將包含Excel常規數字的pandas數據框列轉換爲datetime對象
我可以轉換一個值與xlrd庫,但尋找轉換整個列的最佳方式。 datetime_value =日期時間(* xlrd.xldate_as_tuple(42369,0))
您可以使用map
來執行該操作的lambda函數適用於一列中的每個條目:
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()
轉換前:
date
0 42369
1 42370
2 42371
3 42372
後:
date converted
0 42369 2015-12-31
1 42370 2016-01-01
2 42371 2016-01-02
3 42372 2016-01-03
這是你在找什麼?
更新:
爲了與字符串項這項工作,你既可以說熊貓對待列整數和浮點數:
# 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)))
或只投x
爲int或內浮動拉姆達函數:
# 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)))
謝謝,這就是我正在尋找但我的dataframe列存儲爲字符串。如何將列轉換爲整數或浮點數 – Obabs
@Obabs,請參閱我的更新答案 – Plasma