2015-04-21 77 views
1

我有這樣一本字典「wordfreq」:python pandas isin method?

{'techsmart': 30, 'paradies': 57, 'jobvark': 5000, 'midgley': 100, 'weisman': 2, 'tucuman': 1, 'amdahl': 2, 'frogfeet': 1, 'd8848': 1, 'jiaoyuwang': 1, 'walter': 19} 

,我希望把鑰匙放在了一個列表,如果該值超過5並且如果關鍵是沒有其他數據幀「東風」,然後將它們添加到名爲「停用詞名單:這裏是一個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

我想你的字典加載到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查找不在其他字詞中的字,並反轉布爾掩碼~

那麼現在,您可以很容易地得到一個列表:

In [182]: 

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