Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/356.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 如何使用DataFrame.isin而不必同时匹配索引和值?_Python_Pandas - Fatal编程技术网

Python 如何使用DataFrame.isin而不必同时匹配索引和值?

Python 如何使用DataFrame.isin而不必同时匹配索引和值?,python,pandas,Python,Pandas,我有两个文件,一个有600万条,另一个有500万条。我想比较两个数据帧中的特定列值。这是我使用的代码: print(df1['Col1'].isin(df2['col3']).value_counts()) 这对我来说很重要,因为我希望看到真(相同)和假(不同)的数量。我得到的大多数条目大约95%为真,但有5%的数据为假。我使用to_csv提取了这些数据,并使用vimdiff比较了这些列,它们都是相同的,那么为什么代码将它们标记为false(不同)?有更好、更全面的方法吗 注意:我也检查了列中

我有两个文件,一个有600万条,另一个有500万条。我想比较两个数据帧中的特定列值。这是我使用的代码:

print(df1['Col1'].isin(df2['col3']).value_counts())
这对我来说很重要,因为我希望看到真(相同)和假(不同)的数量。我得到的大多数条目大约95%为真,但有5%的数据为假。我使用to_csv提取了这些数据,并使用vimdiff比较了这些列,它们都是相同的,那么为什么代码将它们标记为false(不同)?有更好、更全面的方法吗

注意:我也检查了列中的空格。没有空格


PS.Pandas.isin文件规定索引和值必须匹配。由于1个文件中有更多的条目,因此索引与这些条目不匹配,如何删除该约束?

首先,将
isin()方法中用作参数的列转换为列表

然后将其解析为
df1
dataframe的副本,因为您需要获取筛选的同一列的值计数

从你的例子来看:

print(df1[df1['Col1'].isin(df2['col3'].values.tolist())]['Col1'].value_counts())

请尝试再次运行该命令。

您可以过滤掉错误记录,然后进行相应的调试。另外,您可以共享一个示例数据帧吗?我已经取出了错误记录,并通过vimdiff进行了比较。它们都一样。数据帧有编号的ID(两个数据帧中都有5位数字),即使您删除了索引约束,您将如何比较两个大小不同的列?对于无法比较的100万个条目,什么是
正确的
(相同)?和什么一样?