gpt4 book ai didi

python - 如何将 Pandas 数据框列从 np.datetime64 转换为日期时间?

转载 作者:太空狗 更新时间:2023-10-30 02:42:12 25 4
gpt4 key购买 nike

我想将 Pandas Data Frame 列从 datetime64 转换为 datetime 格式。这在个人基础上起作用。特别是以下工作正常:

t = dt['time'].values[0]
datetime.utcfromtimestamp(t.astype(int)/1000000000)

但是,当我尝试对整个列执行此操作时

dt['datetime'] = dt['time'].apply(lambda x: datetime.utcfromtimestamp(x.astype(int)/1000000000))

我收到以下错误:

pandas.lib.map_infer (pandas/lib.c:62578)() 中的 pandas/src/inference.pyx

<ipython-input-26-5950d82979b4> in <lambda>(x)
1 print(type(dt['time'].values[0]))
2
----> 3 dt['datetime'] = dt['time'].apply(lambda x: datetime.utcfromtimestamp(x.astype(int)/1000000000))
4 t = dt['time'].values[0]
5 print(t)

AttributeError: 'Timestamp' object has no attribute 'astype'

我做错了什么?如何将我的列转换为 datetime 和/或以 datetime 格式创建新列?

这是数据框的信息:

info

最佳答案

您可以转换系列数据类型 datetime64[ns]datetime.datetime 的 NumPy 数组通过调用 .dt.to_pydatetime() 对象方法:

In [75]: df.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 252 entries, 0 to 251
Data columns (total 1 columns):
time 252 non-null datetime64[ns]<--the `time` column has dtype `datetime64[ns]`
dtypes: datetime64[ns](1)
memory usage: 2.0 KB

In [77]: df.head()
Out[77]:
time
0 2009-01-02
1 2009-01-05
2 2009-01-06
3 2009-01-07
4 2009-01-08


In [76]: df['time'].dt.to_pydatetime()[:5]
Out[76]:
array([datetime.datetime(2009, 1, 2, 0, 0),
datetime.datetime(2009, 1, 5, 0, 0),
datetime.datetime(2009, 1, 6, 0, 0),
datetime.datetime(2009, 1, 7, 0, 0),
datetime.datetime(2009, 1, 8, 0, 0)], dtype=object)

请注意,NDFrame(例如 Series 和 DataFrames)只能将类似日期时间的对象保存为 dtype datetime64[ns] 的对象。 .所有类似日期时间的自动转换为通用数据类型简化了后续日期计算。但这使得无法存储 Python datetime.datetime。 DataFrame 列中的对象。 Pandas 核心开发人员,Jeff Reback explains ,

"We don't allow direct conversions because its simply too complicated to keep anything other than datetime64[ns] internally (nor necessary at all)."

关于python - 如何将 Pandas 数据框列从 np.datetime64 转换为日期时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37354498/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com