我有这个人。数据帧:
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)}]
为什么日期列成为日期时间对象?如何将其保留为字符串?
以下是dtypes:
avi float64
fi_id object
dates object
dtype: object
答案 0 :(得分:4)
您只想改为日期时间列字符串
首先,确保这些列实际上是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'}]