pandas - 将带有 NAT 条目的 pandas 日期时间字段转换为日期
问题描述
我有一个带有 datetime 数据类型字段的 Pandas 数据框。该字段中的大多数值是有效的日期时间值,但有些是 NAT。
我需要删除字段中每个值的日期时间值的时间部分,将字段保持为日期数据类型(而不是 str)。我尝试了以下方法:
df['mydate'] = df['mydate'].dt.date
如果列中没有 NAT 值,它工作正常。但是,如果有 NAT 值,则会引发此错误
{AttributeError}Can only use .dt accessor with datetimelike values
我尝试了这种替代方法来跳过 NAT:
df['mydate'] = [d.date if not pd.isnull(d) else None for d in df['mydate']]
但这将列中的值转换为:
<built-in method date of Timestamp object at 0x000002A06F6501C8>
请告知如何在转换时忽略或跳过字段中的 NAT。我没有运气用谷歌搜索答案,我试图避免在整个数据帧上使用 iterrows() 循环。
解决方案
首先将值转换为日期时间,然后运行良好的dt.date
功能:
df = pd.DataFrame({'mydate':['2015-04-04','2018-09-10', np.nan]})
df['new'] = pd.to_datetime(df['mydate'], errors='coerce').dt.date
print (df)
mydate new
0 2015-04-04 2015-04-04
1 2018-09-10 2018-09-10
2 NaN NaT
推荐阅读
- c# - C#SqlParameter数组如何使用三元运算符有条件地将值设置为null
- javascript - Discord.js 消息用户对应用程序做出反应
- python - 如何使用 API 调用迭代字符串参数列表?
- node.js - 立即断开mongo连接(冒烟测试)
- python - Discord.py 自我机器人
- linux-kernel - 使用 bitbake 为 BBB 构建 .dtbo 覆盖
- visual-studio-code - Visual Studio 代码智能感知停止工作,不再有 CSS 选项卡选项或颜色选择器
- java - 带有信号量的生产者-消费者陷入僵局
- python - 从具有 4 个通道的流中读取 PNG 图像
- javascript - Material-ui中网格项目的对齐方式