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