Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 我是否在熊猫df.tail()中发现了bug或犯了错误?_Python_Python 3.x_Pandas - Fatal编程技术网

Python 我是否在熊猫df.tail()中发现了bug或犯了错误?

Python 我是否在熊猫df.tail()中发现了bug或犯了错误?,python,python-3.x,pandas,Python,Python 3.x,Pandas,好的,我有一个奇怪的。我可能发现了一个bug,但我们先假设我犯了一个错误。不管怎样,我遇到了一些关于熊猫的问题 我想找到数据帧的最后两列,以比较列'Col'的值。我在for循环中运行代码,因为它需要在文件夹中的所有文件上运行。此代码: import pandas for item in itemList: df = df[['Col']].tail(2) valA = df.iloc[1]['Col'] valB = df.iloc[0]['Col'] 主要是工作。我

好的,我有一个奇怪的。我可能发现了一个bug,但我们先假设我犯了一个错误。不管怎样,我遇到了一些关于熊猫的问题

我想找到数据帧的最后两列,以比较列
'Col'
的值。我在for循环中运行代码,因为它需要在文件夹中的所有文件上运行。此代码:

import pandas

for item in itemList:
    df = df[['Col']].tail(2)
    valA = df.iloc[1]['Col']
    valB = df.iloc[0]['Col']
主要是工作。我运行了1040个数据帧,没有任何问题。然后在大约2000的1041处,它会导致此错误:

Traceback (most recent call last):
  File "/path/to/script.py", line 206, in <module>
    valA = df.iloc[1]['Col']
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pandas/core/indexing.py", line 1373, in __getitem__
return self._getitem_axis(maybe_callable, axis=axis)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pandas/core/indexing.py", line 1830, in _getitem_axis
    self._is_valid_integer(key, axis)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pandas/core/indexing.py", line 1713, in _is_valid_integer
    raise IndexError("single positional indexer is out-of-bounds")
IndexError: single positional indexer is out-of-bounds
我看到一个37行的数据框。在我的世界里,37>2

现在,让我们将
打印(df)
向下移动一行,如下所示:

df = df[['Col']].tail(2)
print(df)
输出通常是预期的两行。但是,在出现错误时,
df.tail(2)
返回37行数据帧中的一行数据帧。不是两排,是一排。然而,这只发生在循环中的一个项目上。其他的都很好。如果我像这样手动跳过该项目:

for item in itemList:
    if item == 'troublemaker':
        continue
。。。剧本从头到尾都是。没有错误发生

我必须补充一点,我对这一切都很陌生,所以我可能会完全忽略一些事情。是吗?欢迎提出建议。谢谢

编辑:这是出现错误时打印(df)的输出

                Col       
Date                  
2018-11-30        True
在所有其他情况下:

                Col       
Date
2018-10-31       False
2018-11-30        True

我不认为这是一个bug,因为它在2000年只发生在一个df上。你能给我看看吗? 我也不认为你需要尾巴,你试过了吗

valA = df.iloc[-2]['Col']
valB = df.iloc[-1]['Col']

要获取最后的值。

因为它没有第二个索引,这就是返回错误的原因,请尝试使用
tail
head
,请注意,对于示例df,
valA
valB
将是相同的值

import pandas

for item in itemList:
    df = df[['Col']].tail(2)
    valA = df.tail(1)['Col']
    valB = df.head(1)['Col']

你想在这里给我们看df.tail(2)吗?W-B,你是说它的输出吗?我是说给我们看打印(df.tail(2)),输出是什么当然,W-B,完成了。添加一个方法谢谢,你让我走上正轨了。这个错误是脚本中其他地方的一个bug,它导致数据帧只有一行,但仅在本例中。非常感谢。谢谢,那很有帮助。我试过你的方法,你是对的,没有必要用tail()。
import pandas

for item in itemList:
    df = df[['Col']].tail(2)
    valA = df.tail(1)['Col']
    valB = df.head(1)['Col']