Python 当只有一行时,为什么df.loc[]返回同一行两次?
我目前正在处理一些股票价格csv文件,但在使用pd.read_csv将数据输入df后,.loc[]命令出现了一些奇怪的行为。 我正在用10个文件做这件事,但在遇到这个问题之前,我还想做更多的工作,这实际上只发生在其中一个文件上 我基本上想将每个df子集,只显示9:30到16:00之间的数据,这是一个简单的操作,始终没有问题:Python 当只有一行时,为什么df.loc[]返回同一行两次?,python,pandas,.loc,Python,Pandas,.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) 但当我打电话时: d
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.index,但从未遇到过这种情况。。
我尝试重置索引,使用不同的时间,复制数据帧,但似乎没有任何效果,它一直假装每行存在两次(在这个特定的数据帧中),但事实并非如此
感谢所有试图提供帮助的人。不要将
open
用作变量名open
是一个内置的python函数,您正在覆盖它。在pandas 1.1.2中,除非数据帧中存在重复项,否则我无法复制此行为。即使我更改变量名,它仍然会给我带来奇怪的行为……您尝试过drop_duplicates()
?这能解决问题吗?虽然这是一种奇怪的行为,但您可以尝试在[open]中使用df.at[open]
而不是df.loc[open]