熊猫将字典转换为日期时间

时间:2021-03-24 05:13:27

标签: python pandas

我正在尝试将 mongo 数据转换为 Pandas,我有一个日期字段,当我转换该数据时,我的列字段显示如下值:

0    {'$date': 1616573566159}
1    {'$date': 1616573566159}
2    {'$date': 1616573570647}
3    {'$date': 1616573570647}

我可以使用 df['updatedAt'][0]['$date'] 访问该值,是否可以在不使用循环的情况下将所有值转换为日期时间。

我想做这样的事情:

df["newTime"] = pd.to_datetime(df["updatedAt"])

我正在使用以下方法转换值:

for i in range(len(df["updatedAt"])):
    df["newTime"] = pd.to_datetime(df["updatedAt"][i]['$date'], unit='ms')

可以不循环吗?

2 个答案:

答案 0 :(得分:3)

Series.str.getto_datetime 一起使用:

const { MongoServerSelectionError } = require('mongodb');
const mongoose = require('mongoose');
const conatactSchema = new mongoose.Schema({
    name : {
        type :String,
        required:true
    },
    phone : {
        type:String,
        required: true
    }
});
const Contact = mongoose.model('Contact' , contactSchema);
module.exports = Contact; 

df = pd.DataFrame({'update': [{'$date': 1616573566159},{'$date': 1616573566159},{'$date': 1616573570647},{'$date': 1616573570647}]})   

答案 1 :(得分:2)

json_normalize/to_datetime

pd.to_datetime(pd.json_normalize(df['update'])['$date'], unit='ms')

0   2021-03-24 08:12:46.159
1   2021-03-24 08:12:46.159
2   2021-03-24 08:12:50.647
3   2021-03-24 08:12:50.647
Name: $date, dtype: datetime64[ns]