gpt4 book ai didi

python - pandas 使用日期时间对象重新索引 DataFrame

转载 作者:太空狗 更新时间:2023-10-29 17:13:48 24 4
gpt4 key购买 nike

是否可以使用由日期时间对象组成的列重新索引 pandas DataFrame

我有一个包含以下列的 DataFrame df:

Int64Index: 19610 entries, 0 to 19609
Data columns:
cntr 19610 non-null values #int
datflt 19610 non-null values #float
dtstamp 19610 non-null values #datetime object
DOYtimestamp 19610 non-null values #float
dtypes: int64(1), float64(2), object(1)

我可以使用 df.reindex(index=df.dtstamp) 轻松地沿着 DOYtimestamp 重新索引 dfDOYtimestamp 具有以下值:

>>> df['DOYtimestamp'].values
array([ 153.76252315, 153.76253472, 153.7625463 , ..., 153.98945602,
153.98946759, 153.98947917])

但我想沿着由 datetime 对象组成的 dtstamp 重新索引 DataFrame,以便我直接从索引生成不同的时间戳。 dtstamp 列的值如下所示:

 >>> df['dtstamp'].values
array([2012-06-02 18:18:02, 2012-06-02 18:18:03, 2012-06-02 18:18:04, ...,
2012-06-02 23:44:49, 2012-06-02 23:44:50, 2012-06-02 23:44:51],
dtype=object)

当我尝试沿 dtstamp 重新索引 df 时,我得到以下信息:

>>> df.reindex(index=df.dtstamp)
TypeError: can't compare datetime.datetime to long

我只是不确定我需要做什么才能使索引成为日期时间类型。有什么想法吗?

最佳答案

听起来您不想重建索引。有点令人困惑的是 reindex 并不是为了定义一个新的索引,确切地说;相反,它会查找具有指定索引的行。因此,如果您有一个索引为 [0, 1, 2] 的 DataFrame,那么执行 reindex([2, 1, 0]) 将以相反的顺序返回行.执行类似 reindex([8, 9, 10]) 的操作不会为行创建新索引;相反,它将返回一个具有 NaN 值的 DataFrame,因为没有索引为 8、9 或 10 的行。

看起来你想要的只是保留相同的行,但为它们创建一个全新的索引。为此,您可以直接分配给索引。所以尝试做 df.index = df['dtstamp']

关于python - pandas 使用日期时间对象重新索引 DataFrame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10943478/

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