python - Python如何避免在numpy where子句之后从日期到纳秒的数据类型变化
问题描述
我有一个带日期的数据集,我想做的是替换早于 2000 年到 2000-12-31 12:00:00 的任何日期值,而其他日期保持不变。但是,我的代码结果在 false 语句中将日期值转换为纳秒
我的代码:
data['date'] = np.where(data['date']<=datetime(2000,12,31,12,0,0) , pd.to_datetime('2000-12-31 00:00:00') , data['date'])
我的data
桌子:
Date value
1990-01-01 12:00:00 1
2020-12-31 12:00:00 2
预期表
Date value
2000-12-31 12:00:00 1
2020-12-31 12-00:00 2
现在的实际表格结果
Date Value
2000-12-31 12:00:00 1
1609416000000 2
解决方案
您可以简单地使用.loc[]
pandas 中的函数来仅修改您感兴趣的行,如下所示:
import pandas as pd
import numpy as np
from datetime import datetime
# Creating your sample dataframe
data = pd.DataFrame({'date': [pd.to_datetime('1990-01-01 12:00:00'), pd.to_datetime('2020-12-31 12:00:00')], 'Value': [1,2]})
# filtering your rows to only take the ones before 2000-12-31 12:00:00 and replacing them with 2000-12-31 00:00:00
data.loc[data['date']<=datetime(2000,12,31,12,0,0), 'date'] = pd.to_datetime('2000-12-31 00:00:00')
data.head()
回报:
date Value
2000-12-31 00:00:00 1
2020-12-31 12:00:00 2
推荐阅读
- clojure - Simplifying function output not exactly as expected
- json - JSON - 如何在 JSONpath 中包含键的点
- python - 为弱引用对象列表定义 python 类型提示
- c# - 限制 Azure 表 JSON 响应中返回的对象属性
- mysql - 输出两个关联表的总计的查询没有正确返回总计,为什么?
- java - 为什么 Oracle 仍然为非开发人员桌面 JRE 提供 Java 8?
- python - 我可以从以前运行的 python 脚本中读取代码吗
- java - 在二维数组 Java 中绘制数字菱形
- nginx - 不能在 Nginx 上用 FFmpeg 直播?
- python - 如何为空单元格 csv 文件返回 none 或 0