2016-07-11 108 views
3

我用的Airbnb數據集上Kaggle工作分類變量:簡化與Python /熊貓

https://www.kaggle.com/c/airbnb-recruiting-new-user-bookings 

,並要爲語言列的值簡化成2組的分組 - 英語和非英語。

例如:

users.language.value_counts() 
en 15011 
zh  101 
fr  99 
de  53 
es  53 
ko  43 
ru  21 
it  20 
ja  19 
pt  14 
sv  11 
no  6 
da  5 
nl  4 
el  2 
pl  2 
tr  2 
cs  1 
fi  1 
is  1 
hu  1 
Name: language, dtype: int64 

而結果我希望它是:

users.language.value_counts() 
    english 15011 
    non-english 459 
    Name: language, dtype: int64 

這是那種我想要的解決方案:

def language_groupings(): 
    for i in users: 
     if users.language !='en': 
      replace(users.language.str, 'non-english') 
     else: 
      replace(users.language.str, 'english') 
    return users 

users['language'] = users.apply(lambda row: language_groupings) 

除非有明顯的一些錯誤因爲它在列上運行value_counts時會返回一個空系列。

回答

2

試試這個:

users.language = np.where(users.language !='en', 'non-english', 'english') 
+0

是的,我想發佈類似的東西('users.assign(lang = np.where(users.language =='en','english','non-english' ))['lang']。value_counts() '),但你比較快......;) – MaxU

+0

是的,正是我想要的......謝謝! – vnessified

+0

如果它的權利。請標記爲正確。如果可以的話,請立即行動起來。祝你好運 – Merlin

2

是你想要的嗎?

In [181]: x 
Out[181]: 
     val 
en 15011 
zh 101 
fr  99 
de  53 
es  53 
ko  43 
ru  21 
it  20 
ja  19 
pt  14 
sv  11 
no  6 
da  5 
nl  4 
el  2 
pl  2 
tr  2 
cs  1 
fi  1 
is  1 
hu  1 

In [182]: x.groupby(x.index == 'en').sum() 
Out[182]: 
     val 
False 459 
True 15011 
+0

感謝@MaxU!這對於我想做的其他事情也很有用 – vnessified