gpt4 book ai didi

python - "ValueError: cannot reindex from a duplicate axis"

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

我有以下 df:

Timestamp                            A      B      C     ...     
2014-11-09 00:00:00 NaN 1 NaN NaN
2014-11-09 00:00:00 2 NaN NaN NaN
2014-11-09 00:00:00 NaN NaN 3 NaN
2014-11-09 08:24:00 NaN NaN 1 NaN
2014-11-09 08:24:00 105 NaN NaN NaN
2014-11-09 09:19:00 NaN NaN 23 NaN

我想做以下事情:

Timestamp                            A      B      C     ...     
2014-11-09 00:00:00 2 1 3 NaN
2014-11-09 00:01:00 NaN NaN NaN NaN
2014-11-09 00:02:00 NaN NaN NaN NaN
... NaN NaN NaN NaN
2014-11-09 08:23:00 NaN NaN NaN NaN
2014-11-09 08:24:00 105 NaN 1 NaN
2014-11-09 08:25:00 NaN NaN NaN NaN
2014-11-09 08:26:00 NaN NaN NaN NaN
2014-11-09 08:27:00 NaN NaN NaN NaN
... NaN NaN NaN NaN
2014-11-09 09:18:00 NaN NaN NaN NaN
2014-11-09 09:19:00 NaN NaN 23 NaN

即:我想合并具有相同时间戳的列(我有 17 列),以 1 分钟的粒度重新采样,对于那些没有值的列,我希望有 NaN。

我从以下几个方面入手:

df.groupby('Timestamp').sum()

df = df.resample('1Min', how='max')

但我得到了以下错误:

ValueError: cannot reindex from a duplicate axis

我该如何解决这个问题?我只是在学习 Python,所以我一点经验都没有。

谢谢!

最佳答案

假设您将Timestamp 作为索引开始,您需要先进行重采样,然后在groupby 之前进行reset_index ,这是工作示例:

import pandas as pd

df
A B C ...
Timestamp
2014-11-09 00:00:00 NaN 1 NaN NaN
2014-11-09 00:00:00 2 NaN NaN NaN
2014-11-09 00:00:00 NaN NaN 3 NaN
2014-11-09 08:24:00 NaN NaN 1 NaN
2014-11-09 08:24:00 105 NaN NaN NaN
2014-11-09 09:19:00 NaN NaN 23 NaN

df.resample('1Min', how='max').reset_index().groupby('Timestamp').sum()

A B C ...
Timestamp
2014-11-09 00:00:00 2 1 3 NaN
2014-11-09 00:01:00 NaN NaN NaN NaN
2014-11-09 00:02:00 NaN NaN NaN NaN
2014-11-09 00:03:00 NaN NaN NaN NaN
2014-11-09 00:04:00 NaN NaN NaN NaN
...
2014-11-09 09:17:00 NaN NaN NaN NaN
2014-11-09 09:18:00 NaN NaN NaN NaN
2014-11-09 09:19:00 NaN NaN 23 NaN

希望这对您有所帮助。

更新:

如评论中所述,您的“时间戳”不是日期时间,可能是字符串,因此您不能按 DatetimeIndex 重新采样,只需 reset_index 并将其转换为如下所示:

df = df.reset_index()
df['ts'] = pd.to_datetime(df['Timestamp'])
# 'ts' is now datetime of 'Timestamp', you just need to set it to index
df = df.set_index('ts')
...

现在只需再次运行之前的代码,但将“Timestamp”替换为“ts”,就可以了。

关于python - "ValueError: cannot reindex from a duplicate axis",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27711623/

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