[英]pandas to_dict with python native datetime type and not timestamp
[英]Pandas to_dict() converts datetime to Timestamp
在我的 Pandas DataFrame 中,我使用datetime
模塊將一些日期值從時間戳轉換為日期時間。 打印出 DataFrame 看起來不錯,但是當我使用to_dict()
將 DataFrame 轉換為字典時,日期時間值似乎是 pandas Timestamp
類型。
我的問題類似於這個問題,但我一開始沒有熊貓Timestamp
對象,我想保留我首先創建的datetime
時間。 提議的解決方案對我也不起作用,因為輸出仍然是 pandas Timestamp
,但 dtype object
。
輸入:
import pandas as pd
from datetime import datetime
list_in = [
{"name": "a", "created": 1574947970000},
{"name": "b", "created": 1581322065000},
{"name": "c", "created": 1578929177000}
]
然后我創建一個 DataFrame 並將每個時間戳轉換為datetime
格式。 (除以1000是必須的,因為時間戳是以毫秒為單位的,應該是秒)
df = pd.DataFrame(list_in)
df["created"] = [datetime.fromtimestamp(x / 1000) for x in df["created"]]
print(df)
輸出:
name created
0 a 2019-11-28 14:32:50
1 b 2020-02-10 09:07:45
2 c 2020-01-13 16:26:17
name object
created datetime64[ns]
dtype: object
此輸出將正確的日期值顯示為日期時間對象。 在我的項目中,我在 DataFrame 上做了一些與本主題無關的魔術。 但最后我想將 DataFrame 轉換回這樣的字典列表:
list_out = df.to_dict(orient="records")
最終輸出:
[{'name': 'a', 'created': Timestamp('2019-11-28 14:32:50')},
{'name': 'b', 'created': Timestamp('2020-02-10 09:07:45')},
{'name': 'c', 'created': Timestamp('2020-01-13 16:26:17')}]
最終所需的輸出:
[{'name': 'a', 'created': datetime.datetime(2019, 11, 28, 14, 32, 50)},
{'name': 'b', 'created': datetime.datetime(2020, 2, 10, 9, 7, 45)},
{'name': 'c', 'created': datetime.datetime(2020, 1, 13, 16, 26, 17)}]
所以我的問題實際上是,為什么to_dict()
將datetime
值作為熊貓Timestamp
對象返回? 我怎樣才能防止這種情況發生?
原因可以在這里找到。
我不知道如何防止它發生,但您可以將時間戳轉換為 datetime64 向后:
for rec in list_out:
rec['created'] = rec['created'].to_datetime64()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.