比较两个pandas dataframe中的列并找出差异

2024-06-23 03:00:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个csv文件,都包含在第1天和第2天发布的tweets。我想比较推特的作者,以发现新用户。在

day1.csv如下所示:

authorID
451223
120346
122355
787456

day2.csv如下所示:

^{pr2}$

使用day1.csv作为轴。。。我想比较一下作者的身份证。。任何新的作者(即day2.csv中的作者,而不是day1.csv中的作者),我都会输出作者的ID。请问在python3.XX中怎么做


Tags: 文件csv用户id作者tweetspython3xx
3条回答

你可以这样做:

import pandas as pd
df1=pd.DataFrame({'authorID':['12','34','56']})
df2=pd.DataFrame({'authorID':['12','56','78','97']})
original_users=set(df1[['authorID']].values.reshape(-1))
for i in df2[['authorID']].values.reshape(-1):
    if i not in original_users:
        print(i)

那么df1

^{pr2}$

并且df2

    u
0   12
1   56
2   78
3   97

输出是

78
97

注意,df1[['authorID']].values.reshape(-1)使您能够将列转换为可以迭代的列表。对于这个例子, df1[['authorID']].values.reshape(-1)array(['12', '34', '56'], dtype=object)。将这个数组转换为set是为了提高复杂性。在

另一种比较authorIDs的方法:

>>> old = {'451223', '120346', '122355', '787456'}
>>> new = {'451223', '025660', '122355', '022000'}
>>> {x for x in new if x not in old}
{'025660', '022000'}

如果两个CSV文件都加载为iterables(f.readlines()?)然后,您可以简单地使用集合差分返回day2.csv元素的新集合,这些元素不在day1.csv中:

>>> day1 = ['authorID',451223,120346,122355,787456]
>>> day2 = ['authorID',451223,025660,122355,022000]
>>> set(day2) - set(day1)
set([11184, 9216])

或者

^{pr2}$

相关问题 更多 >

    热门问题