Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何将pandas数据帧导出为json并保留原始日期时间格式?_Python_Json_Pandas_Mongodb_Datetime - Fatal编程技术网

Python 如何将pandas数据帧导出为json并保留原始日期时间格式?

Python 如何将pandas数据帧导出为json并保留原始日期时间格式?,python,json,pandas,mongodb,datetime,Python,Json,Pandas,Mongodb,Datetime,我正在处理一个数据集,我将应用于_json()方法以导出json文件中的熊猫数据帧。然后我将使用这个json文件上传到MongoDB。然而,我意识到datetime格式被转换成了历元时间戳在导出到JSON文件以及将JSON文件上载到MongoDB时,如何保留日期时间格式?另外,我不希望json输出中出现空字段 df: json输出的片段: [{"user_id":62507249,"datetime":[{"checkin_date":

我正在处理一个数据集,我将应用于_json()方法以导出json文件中的熊猫数据帧。然后我将使用这个json文件上传到MongoDB。然而,我意识到datetime格式被转换成了历元时间戳在导出到JSON文件以及将JSON文件上载到MongoDB时,如何保留日期时间格式?另外,我不希望json输出中出现空字段

df:

json输出的片段:

[{"user_id":62507249,"datetime":[{"checkin_date":1612051200000},{"checkout_date":1612051200000}]}, 
{"user_id":69546481,"datetime":[{"checkin_date":1612051200000}]}, ......]
下面是我转换为json的代码:

jsonresult = df.T.apply(lambda row: row[~row.isnull()].to_json())
json_wrapped = "[%s]" % ",".join(jsonresult)

# write JSON to file
with open('jsonresult.json', 'w') as f:
    f.write(json_wrapped)

您需要使用以下方法将
datetime
列转换为
string

此外,将其转换为
json
的代码是不必要的。您可以执行以下操作:

jsonresult  = df.to_json(orient='records')

我想您需要
date\u format='iso'
参数,如果要删除缺少值的行,可以使用:




您好,我很抱歉,我不得不编辑问题以更好地呈现实际问题,您的答案的第一部分在一定程度上有所帮助,它基本上保留了日期格式,但它将日期数据类型转换为字符串,因此当我将json文件上载到MongoDB时,日期是字符串格式,而不是datetime。如何保留datetime格式?糟糕的是,我刚刚意识到我没有在问题中指定要将json文件上载到MongoDB。将编辑我的问题accordingly@snow-Hmmm,如果需要json,那么所有数据都将转换为字符串,因此没有日期时间。@snow-可能的解决方案是将值转换为诸如change
。to_json(date\u format='iso',orient='records')
to
。to_dict(orient='records')df['datetime'] = df['datetime'].astype(str)
jsonresult  = df.to_json(orient='records')
a = [{"user_id":1,"datetime":[{"checkin_date":pd.Timestamp('2021-02-01 00:00:00')},
                                     {"checkout_date":pd.Timestamp('2021-02-01 00:00:00')}]},
     {"user_id":2,"datetime":[{"checkin_date":pd.Timestamp('2021-02-01 00:00:00')}]},
     {"user_id":4,"datetime": np.nan}]
df = pd.DataFrame(a)
print (df)
   user_id                                           datetime
0        1  [{'checkin_date': 2021-02-01 00:00:00}, {'chec...
1        2            [{'checkin_date': 2021-02-01 00:00:00}]
2        4                                                NaN
jsonresult = df.dropna(subset=['datetime']).to_json(date_format='iso', orient='records')
print (jsonresult)
[{"user_id":1,"datetime":[{"checkin_date":"2021-02-01T00:00:00.000Z"},
                          {"checkout_date":"2021-02-01T00:00:00.000Z"}]},
 {"user_id":2,"datetime":[{"checkin_date":"2021-02-01T00:00:00.000Z"}]}]
dictresult = df.dropna(subset=['datetime']).to_dict(orient='records')
print (dictresult)
[{'user_id': 1, 'datetime': [{'checkin_date': Timestamp('2021-02-01 00:00:00')},
                             {'checkout_date': Timestamp('2021-02-01 00:00:00')}]}, 
 {'user_id': 2, 'datetime': [{'checkin_date': Timestamp('2021-02-01 00:00:00')}]}]