值错误:将新列分配给pandas DataFram时,无法从重复轴重新编制索引

2024-03-28 14:09:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我想弄清楚我的日期时间索引中的小时数在两个不同的小时之间。在

这是我的代码:

rbe60['result'] = rbe60.index.hour.to_series().between(3,23)

唯一的问题是我一直得到这个错误。在

^{pr2}$

我看过其他一些帖子,意识到这意味着我的索引或列中可能有一个重复的值。我试着跑去看看复制品在哪里,但都是空的。在

dup = rbe60.index.get_duplicates() and 
dup = rbe60.columns.get_duplicates()

还有什么我应该试试的吗?在

关于我想做的事情:

这是我的数据,我只是想给np.逻辑语句检查数据帧索引的小时是否介于3和23之间。在

                       Open       H       L       C       O
DateTime                                                   
2013-12-30 14:30:00 -0.0756 -0.0729 -0.0756 -0.0737  2.8847
2013-12-30 15:30:00 -0.0735  -0.072 -0.0737 -0.0722  2.8870
2013-12-30 16:30:00 -0.0722 -0.0721 -0.0728 -0.0722  2.8930
2013-12-30 18:00:00 -0.0728 -0.0728 -0.0728 -0.0728  2.8826
2013-12-30 19:00:00 -0.0721 -0.0721 -0.0721 -0.0721  2.8872

Tags: to代码getindex错误时间resultbetween
1条回答
网友
1楼 · 发布于 2024-03-28 14:09:36

错误的原因是索引对齐。数据帧由datetimes的索引组成。现有代码返回如下内容:

print(rbe60.index.hour.to_series().between(3,23))
DateTime
14    True
15    True
16    True
18    True
19    True
Name: DateTime, dtype: bool

请注意,索引值与原始索引值不匹配。这让熊猫在作业期间被甩了。解决方案是分配一个数组,它根本不与索引相关联。在

^{pr2}$

rbe60['result'] = rbe60.index.hour.to_series().between(3,23).values

相关问题 更多 >