Python 将数据帧转换为字典时,日期从字符串更改为日期时间对象

Python 将数据帧转换为字典时,日期从字符串更改为日期时间对象,python,pandas,Python,Pandas,我有福勒。数据帧: 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':

我有福勒。数据帧:

                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对象?如何将其保留为字符串

以下是数据类型:

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\u 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'}]

绝妙的解决方案!