我有一本字典' wordfreq'像这样:
{'techsmart': 30, 'paradies': 57, 'jobvark': 5000, 'midgley': 100, 'weisman': 2, 'tucuman': 1, 'amdahl': 2, 'frogfeet': 1, 'd8848': 1, 'jiaoyuwang': 1, 'walter': 19}
如果值大于5,我想将密钥放在列表中,如果密钥不在另一个数据框中,我想将密钥放在列表中,然后将它们添加到名为&#39的列表中; stopword':这是一个df数据帧:
word freq
1 paradies 1
5 tucuman 1
这是我正在使用的代码:
stopword = []
for k,v in wordfreq.items():
if v >= 5:
if k not in list_c:
stopword.append((k))
任何人都知道如何使用isin()方法或者至少更有效地做同样的事情?
答案 0 :(得分:3)
我将你的dict加载到df:
In [177]:
wordfreq = {'techsmart': 30, 'paradies': 57, 'jobvark': 5000, 'midgley': 100, 'weisman': 2, 'tucuman': 1, 'amdahl': 2, 'frogfeet': 1, 'd8848': 1, 'jiaoyuwang': 1, 'walter': 19}
df = pd.DataFrame({'word':list(wordfreq.keys()), 'freq':list(wordfreq.values())})
df
Out[177]:
freq word
0 1 frogfeet
1 1 tucuman
2 57 paradies
3 1 d8848
4 5000 jobvark
5 100 midgley
6 1 jiaoyuwang
7 30 techsmart
8 2 weisman
9 19 walter
10 2 amdahl
然后使用isin
对其他df(在我的情况下为df_1)进行过滤,如下所示:
In [181]:
df[(df['freq'] > 5) & (~df['word'].isin(df1['word']))]
Out[181]:
freq word
4 5000 jobvark
5 100 midgley
7 30 techsmart
9 19 walter
因此,布尔条件查找大于5的freq值,并且使用isin
查找其他df中的单词,并反转布尔掩码~
。
然后,您现在可以轻松获得一个列表:
In [182]:
list(df[(df['freq'] > 5) & (~df['word'].isin(df1['word']))]['word'])
Out[182]:
['jobvark', 'midgley', 'techsmart', 'walter']