创建pandas DataFrame时如何直接指定列为datetime64[ns]类型?
报错原因说明
- 第一次报错是因为
np.datetime64没有指定时间单位,pandas要求时间类型必须明确到具体单位(通常是纳秒ns) - 第二次报错是因为
np.datetime64[ns]的写法会被Python解析为「取np.datetime64对象中键为ns的值」,而你没有定义ns变量,所以抛出NameError。
正确实现方式
你可以通过以下两种常用方式在创建DataFrame时直接指定date列为datetime64[ns]类型:
方式1:直接在构造时对日期列调用pd.to_datetime
这是最稳妥、兼容性最高的写法:
import pandas as pd df = pd.DataFrame( { "group": ["A", "A", "A", "A", "A"], "date": pd.to_datetime(["2020-01-02", "2020-01-13", "2020-02-01", "2020-02-23", "2020-03-05"]), "value": [10, 20, 16, 31, 56], } )
方式2:指定dtype为字符串格式的类型标识
将dtype改为字符串形式的'datetime64[ns]'即可避免变量解析错误:
import pandas as pd import numpy as np df = pd.DataFrame( { "group": ["A", "A", "A", "A", "A"], "date": pd.Series( ["2020-01-02", "2020-01-13", "2020-02-01", "2020-02-23", "2020-03-05"], dtype='datetime64[ns]', ), "value": [10, 20, 16, 31, 56], } )
类型验证
创建完成后可以用以下代码确认列类型符合要求:
print(df.dtypes)
输出中date列的类型会显示为datetime64[ns]。
内容的提问来源于stack exchange,提问作者Vega
相关产品推荐
相关产品推荐

