根据另一列中的值查找列中的常用词



在一个名为source的列的数据帧中,由两个不同的单词列表组成

source  words  letter_count
1 list1  apple       5
2 list1  pear        4
3 list1  banana      6
4 list2  ford        4
5 list2  chevy       5
6 list2  apple       5
7 list2  banana      6

我试图返回一个新的数据帧,显示list1和list2 中的重复单词

words   letter_count
1  apple        5
2  banana       6

我正在使用python和pandas

我想您正在寻找pandas.Series.duplicated()。它返回一个掩码(包含与条件匹配的值对应的True/False值的序列(,其中在序列中多次出现的值为True,而仅出现的值则为False。然后,您可以使用该掩码对数据帧进行索引:

new_df = df[df['words'].duplicated()].drop('source', axis=1)

输出:

>>> new_df
words  letter_count
6  banana             6
7   apple             5

这里有一种方法可以查找源列的两个列表中是否存在相同的单词。

df.loc[df['words'].isin(set.intersection(*df.groupby('source')['words'].agg(set))),['words','letter_count']].drop_duplicates('words',keep='last')

或:

l = ['words','letter_count']
m1 = df.duplicated(['words','letter_count'])
m2 = df.groupby('words')['source'].transform('nunique').eq(df['source'].nunique())
df.loc[m1 & m2,l]
Output:
words letter_count
6   apple            5
7  banana            6

最新更新