Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/313.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 熊猫:无法检测两列中的重复项_Python_Pandas_Duplicates - Fatal编程技术网

Python 熊猫:无法检测两列中的重复项

Python 熊猫:无法检测两列中的重复项,python,pandas,duplicates,Python,Pandas,Duplicates,我正在尝试从两列中删除重复项。如下图所示,阿拉巴马州和阿拉斯加 但是,当我在下面查询时,它不会检测到重复项。使用drop_副本时也是如此。我已经检查过没有空格,因为它们也有相同的字符长度。有人知道怎么了吗 编辑:在下面添加了一个示例代码。结果是一样的,没有空格,无法检测重复项 list1=['Alabama','Alabama','Alabama','Alabama','Alaska'] list2=['Alabama','Auburn','Florence','Jacksonville','A

我正在尝试从两列中删除重复项。如下图所示,阿拉巴马州和阿拉斯加

但是,当我在下面查询时,它不会检测到重复项。使用drop_副本时也是如此。我已经检查过没有空格,因为它们也有相同的字符长度。有人知道怎么了吗

编辑:在下面添加了一个示例代码。结果是一样的,没有空格,无法检测重复项

list1=['Alabama','Alabama','Alabama','Alabama','Alaska']
list2=['Alabama','Auburn','Florence','Jacksonville','Alaska']
df=pd.DataFrame(list1, columns=['States'])
df['Region']=pd.DataFrame(list2)

df.duplicated()
我认为您需要比较列:

df[df['States'].ne(df['Region'])]
时间:

df = pd.concat([df]*100000).reset_index(drop=True)

In [353]: %timeit (df[df['States'].ne(df['Region'])])
10 loops, best of 3: 23.7 ms per loop

In [354]: %timeit (df[df['States'] != df['Region']])
10 loops, best of 3: 88.6 ms per loop
我认为您需要比较列:

df[df['States'].ne(df['Region'])]
时间:

df = pd.concat([df]*100000).reset_index(drop=True)

In [353]: %timeit (df[df['States'].ne(df['Region'])])
10 loops, best of 3: 23.7 ms per loop

In [354]: %timeit (df[df['States'] != df['Region']])
10 loops, best of 3: 88.6 ms per loop

看起来您希望直接比较列,这可以使用不等式轻松完成:

In [93]:
df[df['States'] != df['Region']]

Out[93]:
    States        Region
1  Alabama        Auburn
2  Alabama      Florence
3  Alabama  Jacksonville
duplicated查找单列或所有列中的重复值,在此处失败,因为“Alabama”在一行中仅显示一次,如果在多行中显示,则会将其删除


注意,有一种内置方法,它意味着“不等于”,该方法速度更快,但可读性可能较低。

看起来您想要直接比较列,您可以使用不等式轻松地进行比较:

In [93]:
df[df['States'] != df['Region']]

Out[93]:
    States        Region
1  Alabama        Auburn
2  Alabama      Florence
3  Alabama  Jacksonville
duplicated查找单列或所有列中的重复值,在此处失败,因为“Alabama”在一行中仅显示一次,如果在多行中显示,则会将其删除


注意,有一种内置方法,它意味着不等于更快但可读性可能更低的方法

pd.DataFrame.duplicated方法检测整个数据帧中的重复行。但是,它不会检测您所需的行中的重复值。

pd.DataFrame.duplicated方法检测整个数据帧中的重复行。但是,它不会在您需要的行中检测到重复的值。

如果要删除,可以获取索引并按索引删除它

list1 = ['Alabama', 'Alabama', 'Alabama', 'Alabama', 'Alaska']
list2 = ['Alabama', 'Auburn', 'Florence', 'Jacksonville', 'Alaska']
df = pd.DataFrame(list1, columns=['States'])
df['Region'] = pd.DataFrame(list2)

index_list = df[df['States'] == df['Region']].index.tolist()
df = df.drop(df.index[index_list])

print(df)
输出如下

States        Region
1  Alabama        Auburn
2  Alabama      Florence
3  Alabama  Jacksonville
df.drop_按行重复工作,因此如果有多行包含相同的值,则会将其删除 下面是一个例子

在删除复制之前

    States        Region
0  Alabama       Alabama
1  Alabama        Auburn
2  Alabama      Florence
3  Alabama  Jacksonville
4   Alaska        Alaska
5   Alaska        Alaska
6   Alaska        Alaska
第4、5、6行完全相同,因此除第4行之外的所有行都将被删除,在drop_重复之后,df将如下所示

States        Region
0  Alabama       Alabama
1  Alabama        Auburn
2  Alabama      Florence
3  Alabama  Jacksonville
4   Alaska        Alaska

如果要删除,可以获取索引并按索引删除它

list1 = ['Alabama', 'Alabama', 'Alabama', 'Alabama', 'Alaska']
list2 = ['Alabama', 'Auburn', 'Florence', 'Jacksonville', 'Alaska']
df = pd.DataFrame(list1, columns=['States'])
df['Region'] = pd.DataFrame(list2)

index_list = df[df['States'] == df['Region']].index.tolist()
df = df.drop(df.index[index_list])

print(df)
输出如下

States        Region
1  Alabama        Auburn
2  Alabama      Florence
3  Alabama  Jacksonville
df.drop_按行重复工作,因此如果有多行包含相同的值,则会将其删除 下面是一个例子

在删除复制之前

    States        Region
0  Alabama       Alabama
1  Alabama        Auburn
2  Alabama      Florence
3  Alabama  Jacksonville
4   Alaska        Alaska
5   Alaska        Alaska
6   Alaska        Alaska
第4、5、6行完全相同,因此除第4行之外的所有行都将被删除,在drop_重复之后,df将如下所示

States        Region
0  Alabama       Alabama
1  Alabama        Auburn
2  Alabama      Florence
3  Alabama  Jacksonville
4   Alaska        Alaska

您需要发布原始数据和代码,以便其他人尝试复制此内容,您发布了一个没有人可以复制的图像,其中没有重复的示例代码!谢谢您需要发布原始数据和代码,以便其他人尝试复制此内容,您发布了一个没有人可以复制的图像,其中没有重复的示例代码!谢谢嗨,我查过了。。。没有空格~已经添加了一个示例代码供大家尝试过~对不起,我错了。我在更大的数据帧中添加了另一个更快的解决方案。哦,太酷了~我会接受urs作为答案,因为它更快~谢谢uHi,我已经检查过了。。。没有空格~已经添加了一个示例代码供大家尝试过~对不起,我错了。我在更大的数据帧中添加了另一个更快的解决方案。哦,太酷了~将接受urs作为答案,因为它更快~谢谢udamn,谢谢!为什么熊猫不放弃重复工作呢?有什么想法吗?@Jake请告诉我关于drop\u DuplicateSoh的最新答案,好的~谢谢。你描述得很清楚~非常感谢你的帮助,谢谢!为什么熊猫不放弃重复工作呢?有什么想法吗?@Jake请告诉我关于drop\u DuplicateSoh的最新答案,好的~谢谢。你把它描述得很清楚~非常感谢你的帮助