首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

将datetime转换为date python -->错误:不可散列的类型:'numpy.ndarray‘

在Python中,将datetime对象转换为date对象通常是一个简单的操作,但如果你遇到错误“不可散列的类型:'numpy.ndarray'”,这通常意味着你在处理的是一个NumPy数组,而不是单个datetime对象。

以下是一些常见的场景和解决方法:

场景1:单个datetime对象

如果你只是处理单个datetime对象,可以直接使用datetime.date()方法:

代码语言:javascript
复制
from datetime import datetime

# 示例 datetime 对象
dt = datetime.now()

# 转换为 date 对象
date_obj = dt.date()
print(date_obj)

场景2:Pandas DataFrame中的datetime

如果你在处理一个Pandas DataFrame,并且需要将datetime列转换为date列,可以使用pandasdt.date属性:

代码语言:javascript
复制
import pandas as pd

# 示例 DataFrame
data = {'datetime_col': [pd.Timestamp('2023-01-01 12:00:00'), pd.Timestamp('2023-01-02 13:00:00')]}
df = pd.DataFrame(data)

# 转换为 date 列
df['date_col'] = df['datetime_col'].dt.date
print(df)

场景3:NumPy数组中的datetime对象

如果你在处理一个包含datetime对象的NumPy数组,可以使用numpy.vectorize来应用datetime.date()方法:

代码语言:javascript
复制
import numpy as np
from datetime import datetime

# 示例 NumPy 数组
dt_array = np.array([datetime(2023, 1, 1, 12, 0, 0), datetime(2023, 1, 2, 13, 0, 0)])

# 使用 numpy.vectorize 转换为 date 数组
date_array = np.vectorize(lambda x: x.date())(dt_array)
print(date_array)

场景4:列表中的datetime对象

如果你在处理一个包含datetime对象的列表,可以使用列表推导式来转换:

代码语言:javascript
复制
from datetime import datetime

# 示例列表
dt_list = [datetime(2023, 1, 1, 12, 0, 0), datetime(2023, 1, 2, 13, 0, 0)]

# 转换为 date 列表
date_list = [dt.date() for dt in dt_list]
print(date_list)
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券