首页 > 解决方案 > 当只有一个时,为什么 df.loc[] 返回同一行两次?

问题描述

我目前正在处理一些股票价格 csv 文件,但是在使用 pd.read_csv 将数据导入 df 之后,.loc[] 命令出现了一些奇怪的行为。我正在使用 10 个文件执行此操作,但在遇到此问题之前我想做更多的事情,这实际上只发生在其中一个文件上......

我基本上想对每个 df 进行子集化,只显示 9:30 到 16:00 之间的数据,这是一个简单的操作,一直没有问题:

open = dt.time(hour= 9, minute= 30)
close = dt.time(hour= 15, minute= 59)

但是当我打电话时:

 df.loc[open]

我得到:

     Open   High     Low   Close  Volume
Date                                                      
2017-12-29 09:30:00  119.46  119.6  119.42  119.57     480
2017-12-29 09:30:00  119.46  119.6  119.42  119.57     480

但是 csv 中没有重复项,当我让它打印部分数据帧或在运行调试器时暂停调试器以向我显示内存中的 df 时,也没有重复项。

这发生在我选择传递的任何时间以及我添加到 loc[] 命令的任何列名。但仅使用其中一个数据框。

这也弄乱了我脚本的其他部分,例如,当我想从一行中检索一个值并在计算中使用它时,它会抛出一个错误,因为当它应该只返回一个值时,这种怪异正在返回一个系列

我以前使用过 .loc 和 Datetime.Indexes 很多次,但从未遇到过这种情况。我尝试重置索引,使用不同的时间,制作数据帧的副本,似乎没有任何效果,它一直假装每一行存在两次(在这个一个特定的数据帧),但事实并非如此......

感谢任何试图提供帮助的人。

标签: pythonpandas.loc

解决方案


推荐阅读