python - 使用 pandas 为系列分配时间戳值会创建一个 int 而不是

标签 python pandas

在 Python 中, Pandas :

g = pd.Series(dict(a = 5, b =datetime(2018, 1,1)))
g['datetime'] = pd.Timestamp('2018-01-02')

g 返回:

a                             5
b           2018-01-01 00:00:00
datetime    1514851200000000000
dtype: object

任何人都知道为什么时间戳在这里转换为它的 int 值,以及如何避免这个问题并正确地将时间戳附加到系列?

最佳答案

我同意@MrE,他说:

I think it makes sense: 5 is not a datetime object, so pandas is parsing the data and find that you have both a number and a datetime object, and it parses both as 'object' string, because the dtype needs to be consistent across all data in the Series. The string representation of a datetime is the date string, not timestamp. When you then add to it, you can modify the dtype of a cell

我真的同意,它必须找到一个 dtype 并找到 int,如果你删除 'a' 索引,它就会工作(这基本上是在检查以上内容是否属实):

g = pd.Series(dict(b =datetime(2018, 1,1)))
g['datetime'] = pd.Timestamp('2018-01-02')
print(g)

输出:

b          2018-01-01
datetime   2018-01-02
dtype: datetime64[ns]

原来如此。

解决问题:

只需在最后添加一行:

g['datetime']=pd.to_datetime(g['datetime'])

现在:

print(g)

是:

a                             5
b           2018-01-01 00:00:00
datetime    2018-01-02 00:00:00
dtype: object

关于python - 使用 pandas 为系列分配时间戳值会创建一个 int 而不是,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50431592/

相关文章:

python - 如何从具有唯一键和值作为列表的字典中制作数据框?

python - 如何从列表字符串pandas数据帧的列中提取值

python - jupyter 笔记本一直连接到内核

python - Aca-py 0.6.0 : INFO Ledger instance not provided error/bug?

python - 删除列表列表中存在的重复整数列表,而不考虑整数列表的排序

python - 用 python 为 pandas 的列文件 csv 添加颜色

python - 有没有办法迭代多个数据帧,将它们写入带有格式的多个 Excel 工作表?

python - 为什么 for 循环阶乘函数比递归函数更快?

python - 如何在 Python 中枚举对象的属性?

python - Pandas 用三点和 seaborn 散点图颜色