python pandas isin方法?

时间:2015-04-21 15:38:59

标签: 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}

如果值大于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()方法或者至少更有效地做同样的事情?

1 个答案:

答案 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']