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'}]
绝妙的解决方案!