python - 如何正确地将包含日期的 csv 中的列转换为 JSON
问题描述
在我的 csv 文件中,该"ESTABLİSHMENT DATE"
列由如下斜线分隔:01/22/2012
.
我正在将 csv 格式转换为 JSON 格式,这需要使用 pandas 完成,但该"ESTABLİSHMENT DATE"
列未正确转换为 JSON。
df = pd.read_csv(my_csv)
df.to_json("some_path", orient="records")
我不明白为什么它笨拙地添加了反斜杠。
"ESTABLİSHMENT DATE":"01\/22\/2012",
但是,我需要将结果写入文件,如下所示:
"ESTABLİSHMENT DATE":"01/22/2012",
解决方案
- 来自 pandas 数据框的 json 文件中的正斜杠回答了为什么它笨拙地添加了反斜杠,这个答案显示了如何使用该
json
库来解决这个问题。- 只要日期格式是
01/22/2012
,/
就会用\
.
- 只要日期格式是
- 要将包含日期的 csv 中的列正确转换为 JSON,可以使用 pandas将
'date'
列转换为正确datetime dtype
的 ,然后使用.to_json
.2012-01-22
是正确的日期时间格式,但.to_json
会将其转换为1327190400000
. 使用后将pd.to_datetime
正确的格式设置为%Y-%m-%d
,类型必须设置为string
。
import pandas as pd
# test dataframe
df = pd.DataFrame({'date': ['01/22/2012']})
# display(df)
date
0 01/22/2012
# to JSON
print(df.to_json(orient='records'))
[out]: [{"date":"01\/22\/2012"}]
# set the date column to a proper datetime
df.date = pd.to_datetime(df.date, format='%m/%d/%Y')
# display(df)
date
0 2012-01-22
# to JSON
print(df.to_json(orient='records'))
[out]: [{"date":1327190400000}]
# set the date column type to string
df.date = df.date.astype(str)
# to JSON
print(df.to_json(orient='records'))
[out]: [{"date":"2012-01-22"}]
# as a single line of code
df.date = pd.to_datetime(df.date, format='%m/%d/%Y').astype(str)
推荐阅读
- sql - redshift 根据其他列创建具有值的字段
- linux - 如何在 bash 脚本或 linux 命令中转换 cron 时间
- oracle - Oracle upgrade from 12c to 19c - older application no longer works
- vue.js - Prevent route change within Vue compnent
- github - 即使在多次部署之后,Github 页面仍在读取旧的机密
- java - 无法读取 JSON:无法构造 `org.club.entities.User` 的实例
- python - Discord.py:加入和离开消息不起作用
- mongodb - 如何索引 mongodb 集合以允许对 10-15 个属性中的任何一个进行排序/过滤?
- r - 如何避免总和计算中的负变量?
- java - 表达式的非法开始 - Java