数值错误:在使用pandas时,不能使用isin从重复的轴重新索引。

4

我正在尝试将邮政编码缩短到各个文件中,但是我一直收到以下错误:

ValueError: 无法从重复的轴重新索引

我已经阅读了Stackoverflow上的其他文档,但我还没有找出为什么会出现重复的轴。

import csv
import pandas as pd
from pandas import DataFrame as df
fp = '/Users/User/Development/zipcodes/file.csv'
file1 = open(fp, 'rb').read()
df = pd.read_csv(fp, sep=',')

df = df[['VIN', 'Reg Name', 'Reg Address', 'Reg City', 'Reg ST', 'ZIP',
         'ZIP', 'Catagory', 'Phone', 'First Name', 'Last Name', 'Reg NFS',
         'MGVW', 'Make', 'Veh Model','E Mfr', 'Engine Model', 'CY2010',
         'CY2011', 'CY2012', 'CY2013', 'CY2014', 'CY2015', 'Std Cnt', 
        ]]
#reader.head(1)
df.head(1)
zipBlue = [65355, 65350, 65345, 65326, 65335, 64788, 64780, 64777, 64743,
64742, 64739, 64735, 64723, 64722, 64720]

还包含zipGreen,zipRed,zipYellow,ipLightBlue 但没有在示例中提供。

def IsInSort():
    blue = df[df.ZIP.isin(zipBlue)]
    green = df[df.ZIP.isin(zipGreen)]
    red = df[df.ZIP.isin(zipRed)]
    yellow = df[df.ZIP.isin(zipYellow)]
    LightBlue = df[df.ZIP.isin(zipLightBlue)]
def SaveSortedZips():
    blue.to_csv('sortedBlue.csv')
    green.to_csv('sortedGreen.csv')
    red.to_csv('sortedRed.csv')
    yellow.to_csv('sortedYellow.csv')
    LightBlue.to_csv('SortedLightBlue.csv')
IsInSort()
SaveSortedZips()

1864 # 尝试在一个有重复值的轴上重新索引 1865
if not self.is_unique and len(indexer): -> 1866 raise ValueError("无法从重复的轴重新索引") 1867 1868 def reindex(self, target, method=None, level=None, limit=None):

ValueError: 无法从重复的轴重新索引


你在哪一行得到了错误?你的示例与以下内容有何不同:df = pd.DataFrame({'A':[1,1,2,4]},index=[1,1,2,2]); df[df.A.isin([1,2])] - Gecko
精确的行 ValueError Traceback(最近的调用最后) <ipython-input-124-df92f77fc0e7> in <module>() 11 yellow.to_csv('sortedYellow.csv') 12 LightBlue.to_csv('SortedLightBlue.csv') ---> 13 IsInSort() 14 SaveSortedZips() - icomefromchaos
不确定这段代码含义:from pandas import DataFrame as df,但是这不是一个好的做法。按照惯例,df 是 pandas.DataFrame 的一个实例。你应该删除那行代码。如果你想将 DataFrame 带入命名空间而不必在前面添加 pd,你可以这样做,但不要包括 as df - JohnE
谢谢JohnE。我已经进行了更改。 - icomefromchaos
不确定发生了什么,但是没有数据很难弄清楚。如果你能用一个小样本数据集重现这个错误,那会有帮助。 - JohnE
1个回答

12

我非常确定你的问题与你的口罩有关

df = df[['VIN', 'Reg Name', 'Reg Address', 'Reg City', 'Reg ST', 'ZIP',
         'ZIP', 'Catagory', 'Phone', 'First Name', 'Last Name', 'Reg NFS',
         'MGVW', 'Make', 'Veh Model','E Mfr', 'Engine Model', 'CY2010',
         'CY2011', 'CY2012', 'CY2013', 'CY2014', 'CY2015', 'Std Cnt', 
        ]]

'ZIP'这个词出现了两次。删除其中一个应该可以解决问题。

ValueError: cannot reindex from a duplicate axis错误是一种非常难懂的pandas错误之一,它根本不告诉您错误在哪里。

这个错误通常与两列具有相同的名称有关,无论是在操作之前还是之后(内部)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接