gpt4 book ai didi

python - 加载到 pd.DataFrame 时日期时间的奇怪行为

转载 作者:太空宇宙 更新时间:2023-11-03 15:32:38 25 4
gpt4 key购买 nike

我正在尝试构建简单的 DataFrame。两者都有日期,而第一个有一个额外的列:

import pandas as pd
import datetime as dt
import numpy as np

a = pd.DataFrame(np.array([
[dt.datetime(2018, 1, 10), 5.0]]), columns=['date', 'amount'])

print(a)

# date_dt amount
# 2018-01-10 00:00:00 5

b = pd.DataFrame(np.array([
[dt.datetime(2018, 1, 10)]]), columns=['date'])

print(b)

# date_dt
# 2018-01-10

为什么日期的解释不同(有时间和没有时间)?当我稍后尝试应用合并时,它给我带来了问题。

最佳答案

好的,这就是发生的事情。我将使用以下代码:

import pandas as pd
import datetime as dt
import numpy as np

a_val = np.array([[dt.datetime(2018, 1, 10), 5.0]])

a = pd.DataFrame(a_val, columns=['date', 'amount'])

b_val = np.array([[dt.datetime(2018, 1, 10)]])
b = pd.DataFrame(b_val, columns=['date'])

我只是拆分 pd 数据帧的内容并调用数据帧本身。首先让我们打印 a_valb_val 变量:

print(a_val, b_val)
# output: [[datetime.datetime(2018, 1, 10, 0, 0) 5.0]] [[datetime.datetime(2018, 1, 10, 0, 0)]]

还是不错的,对象是 datetime.datetime。

现在让我们使用 .values 访问数据框的值:

print(a.values, b.values)
# output: [[datetime.datetime(2018, 1, 10, 0, 0) 5.0]] [['2018-01-10T00:00:00.000000000']]

这里的事情搞砸了。让我们打印日期的类型:

print(type(a.values[0][0]), type(b.values[0][0]))
# output: <class 'datetime.datetime'> <class 'numpy.datetime64'>

好的,就是这样:因为在第二个数据帧中你只有一个日期对象,并且你调用了 np.array(),所以日期被转换为 numpy.datetime64 对象,它具有不同的格式。相反,在第一个数据框中,您有一个 datetime 对象和一个 int,代码将它们保持原样。

简短版本:如果你有不同对象的集合,如日期、字符串、整数等,请使用列表,而不是 numpy 数组

关于python - 加载到 pd.DataFrame 时日期时间的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57145851/

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