[英]Always got NaN when converting dictionary to multiindex pandas DataFrame if the index including datetime.date object
[英]Change in date from string to datetime object when converting pandas dataframe to dictionary
我有傻瓜。 數據框:
avi fi_id dates
2017-07-17 0.318844 zab_a_002 2017-07-17
當我將其轉換成字典時,得到以下信息:
dict_avi = df.reset_index().to_dict('records')
[{'index': Timestamp('2017-07-17 00:00:00'), 'avi': 0.3188438263036763, 'fi_id': 'zab_a_002', 'dates': datetime.date(2017, 7, 17)}]
為什么dates列成為datetime對象? 如何將其保留為字符串?
這是dtypes:
avi float64
fi_id object
dates object
dtype: object
您只想制作datetime列字符串
首先,確保這些列實際上是dtype
datetime
df['index'] = pd.to_datetime(df['index'])
df['dates'] = pd.to_datetime(df['dates'])
既然遇到了這種麻煩,我們本來可以簡單地將它們變成字符串
df['index'] = pd.to_datetime(df['index']).astype(str)
df['dates'] = pd.to_datetime(df['dates']).astype(str)
但這不會一概而論。
我要做的是使用select_dtypes
僅捕獲datetime
列並將其轉換為字符串。 然后,我將更新數據框並轉儲到新字典中。 所有這些都不會弄亂數據框。
df.assign(
**df.select_dtypes(['datetime']).astype(str).to_dict('list')
).to_dict('records')
[{'avi': 0.3188438263036763,
'dates': '2017-07-17',
'fi_id': 'zab_a_002',
'index': '2017-07-17'}]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.