Python drop“u duplicates-ValueError:keep必须为”或“;第一个“&引用;最后一句话;还是假的
我已经安装了熊猫17.0。我现在犯了一个奇怪的错误Python drop“u duplicates-ValueError:keep必须为”或“;第一个“&引用;最后一句话;还是假的,python,debugging,pandas,duplicates,Python,Debugging,Pandas,Duplicates,我已经安装了熊猫17.0。我现在犯了一个奇怪的错误 ValueError:keep必须是“first”、“last”或False 当我尝试这样做时: ids=ids.drop_duplicates('ID') 这在以前的Pandas版本中一直有效,代码没有更改。顺便说一句,ids是一个包含一列整数的数据帧 以下是回溯: Traceback (most recent call last): File "<ipython-input-34-6e98a890591b>", line 1
ValueError:keep必须是“first”、“last”或False
当我尝试这样做时:
ids=ids.drop_duplicates('ID')
这在以前的Pandas版本中一直有效,代码没有更改。顺便说一句,ids是一个包含一列整数的数据帧
以下是回溯:
Traceback (most recent call last):
File "<ipython-input-34-6e98a890591b>", line 1, in <module>
ids=ids.drop_duplicates('ID')
File "C:\Anaconda3\lib\site-packages\pandas\util\decorators.py",
line 89, in wrapper
return func(*args, **kwargs)
File "C:\Anaconda3\lib\site-packages\pandas\core\series.py", line
1164, in drop_duplicates
return super(Series, self).drop_duplicates(keep=keep, inplace=inplace)
File "C:\Anaconda3\lib\site-packages\pandas\util\decorators.py",
line 89, in wrapper
return func(*args, **kwargs)
File "C:\Anaconda3\lib\site-packages\pandas\core\base.py", line 576,
in drop_duplicates
duplicated = self.duplicated(keep=keep)
File "C:\Anaconda3\lib\site-packages\pandas\util\decorators.py",
line 89, in wrapper
return func(*args, **kwargs)
File "C:\Anaconda3\lib\site-packages\pandas\core\series.py", line
1169, in duplicated
return super(Series, self).duplicated(keep=keep)
File "C:\Anaconda3\lib\site-packages\pandas\util\decorators.py",
line 89, in wrapper
return func(*args, **kwargs)
File "C:\Anaconda3\lib\site-packages\pandas\core\base.py", line 603,
in duplicated
duplicated = lib.duplicated(keys, keep=keep)
File "pandas\lib.pyx", line 1383, in pandas.lib.duplicated
(pandas\lib.c:24490)
ValueError: keep must be either "first", "last" or False
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
ids=ids.drop_duplicates('ID'))
文件“C:\Anaconda3\lib\site packages\pandas\util\decorators.py”,
第89行,在包装器中
返回函数(*args,**kwargs)
文件“C:\Anaconda3\lib\site packages\pandas\core\series.py”,第行
1164,在drop_副本中
返回超级(系列,自我)。删除重复项(保留=保留,原地=原地)
文件“C:\Anaconda3\lib\site packages\pandas\util\decorators.py”,
第89行,在包装器中
返回函数(*args,**kwargs)
文件“C:\Anaconda3\lib\site packages\pandas\core\base.py”,第576行,
在drop\u副本中
复制=自我复制(保留=保留)
文件“C:\Anaconda3\lib\site packages\pandas\util\decorators.py”,
第89行,在包装器中
返回函数(*args,**kwargs)
文件“C:\Anaconda3\lib\site packages\pandas\core\series.py”,第行
1169,一式两份
返回超级(系列,自我)。重复(保留=保留)
文件“C:\Anaconda3\lib\site packages\pandas\util\decorators.py”,
第89行,在包装器中
返回函数(*args,**kwargs)
文件“C:\Anaconda3\lib\site packages\pandas\core\base.py”,第603行,
一式两份
duplicated=lib.duplicated(键,keep=keep)
pandas.lib.duplicated中的文件“pandas\lib.pyx”,第1383行
(熊猫库c:24490)
ValueError:keep必须为“第一”、“最后”或False
注意
keep=keep
?Pandas 17.0中删除重复项的默认设置是keep='first'
。所以,如果我不指定,它不应该默认为该值吗?为什么我会在这里出错?熊猫17.0中的错误?该错误表明ids
实际上是一个系列,其中第一个参数是参数,如果ids
确实是一个df,那么这个错误就不会发生,因为第一个参数是子集我尝试了语法(使用keep
),以前是take\u last
import pandas as pd
df = pd.DataFrame({'c1': ['cat'] * 3 + ['dog'] * 4,
'c2': [1, 1, 2, 3, 3, 4, 4]})
print(df)
print(df.drop_duplicates())
print(df.drop_duplicates(['c1', 'c2'],keep='first'))
print(df.drop_duplicates(['c1', 'c2'],keep='last'))
print(df.drop_duplicates(['c1', 'c2'],keep=False)) #drops all but one cat stays
默认情况下,drop_duplicates()
是keep='first'
和所有列。您的回溯表明ids
是一个系列类型(ids)
显示了什么?哇,太快了。谢谢Ed我很不好意思错过了这个。17年是否发生了可能导致此错误的变化?我的错误是这是一个系列。非常感谢。。。如果他们允许,我会在10分钟内接受答案!这是在向下滚动一点以获得drop\u duplicates