我正在尝试将 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')
可以不循环吗?
答案 0 :(得分:3)
将 Series.str.get
与 to_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]