pd.read_sql_query()を使用してSQLからデータをプルすることで構築したデータフレームがあります。日付がありますが、Excelの一般的な数値形式の列が1つあります。この列を日時オブジェクトに変換するにはどうすればよいですか。
xlrdライブラリを使用して1つの値を変換できますが、列全体を変換するための最良の方法を探しています。datetime_value = datetime(* xlrd.xldate_as_tuple(42369、0))
を使用map
して、その操作を実行するラムダ関数を列のすべてのエントリに適用できます。
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
これはあなたが探しているものですか?
更新:
これを文字列エントリで機能させるには、Pandasに列をintまたはfloatとして扱うように指示します。
# 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またはfloatにキャストするだけです。
# 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)))
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加