我有一个愚蠢的。数据框:
avi fi_id dates
2017-07-17 0.318844 zab_a_002 2017-07-17
Run Code Online (Sandbox Code Playgroud)
当我将它转换成字典时,我得到了这个:
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)}]
Run Code Online (Sandbox Code Playgroud)
为什么日期列变成了日期时间对象?如何将其保留为字符串?
这是dtypes:
avi float64
fi_id object
dates object
dtype: object
Run Code Online (Sandbox Code Playgroud)
您只想制作日期时间列字符串
首先,确保这些列实际上是 dtype datetime
df['index'] = pd.to_datetime(df['index'])
df['dates'] = pd.to_datetime(df['dates'])
Run Code Online (Sandbox Code Playgroud)
既然我们经历了这个麻烦,我们可以直接把它们变成字符串
df['index'] = pd.to_datetime(df['index']).astype(str)
df['dates'] = pd.to_datetime(df['dates']).astype(str)
Run Code Online (Sandbox Code Playgroud)
但这不能一概而论。
我要做的是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'}]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4363 次 |
| 最近记录: |