python-isin方法?

python-isin方法?,python,dictionary,pandas,dataframe,Python,Dictionary,Pandas,Dataframe,我有这样一本字典“wordfreq”: {'techsmart': 30, 'paradies': 57, 'jobvark': 5000, 'midgley': 100, 'weisman': 2, 'tucuman': 1, 'amdahl': 2, 'frogfeet': 1, 'd8848': 1, 'jiaoyuwang': 1, 'walter': 19} In [181]: df[(df['freq'] > 5) & (~df['word'].isin(df1['

我有这样一本字典“wordfreq”:

{'techsmart': 30, 'paradies': 57, 'jobvark': 5000, 'midgley': 100, 'weisman': 2, 'tucuman': 1, 'amdahl': 2, 'frogfeet': 1, 'd8848': 1, 'jiaoyuwang': 1, 'walter': 19}
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,并且键不在另一个数据帧“df”中,我想将键放入一个列表中,然后将它们添加到一个名为“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()方法做同样的事情,或者至少更有效吗?

我会将您的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)进行过滤,如下所示:

{'techsmart': 30, 'paradies': 57, 'jobvark': 5000, 'midgley': 100, 'weisman': 2, 'tucuman': 1, 'amdahl': 2, 'frogfeet': 1, 'd8848': 1, 'jiaoyuwang': 1, 'walter': 19}
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
因此,布尔条件使用
isin
查找大于5的freq值以及单词不在其他df中的位置,并反转布尔掩码
~

现在,您可以轻松获取列表:

In [182]:

list(df[(df['freq'] > 5) & (~df['word'].isin(df1['word']))]['word'])
Out[182]:
['jobvark', 'midgley', 'techsmart', 'walter']