2015-11-03 45 views
5

我有一個Pandas系列10000行,填充了單個字母表,從A到Z. 但是,我想創建僅用於A,B和C,使用熊貓get_dummies。 我該如何去做呢?熊貓 - 只爲某些值獲取假人

我不想獲取列中所有行值的虛擬變量,然後選擇特定列,因爲列中包含最終導致內存錯誤的其他冗餘數據。

+0

那麼,你想過濾DF第一或者你想'這些值僅get_dummies'? – EdChum

+0

我只想爲這些值使用get_dummies。 – ExtremistEnigma

+0

注意:你可以用'get_dummies'的'sparse = True'參數解決很多內存問題。 –

回答

1

試試這個:

# create mock dataframe 
df = pd.DataFrame({'alpha':['a','a','b','b','c','e','f','g']}) 

# use replace with a regex to set characters d-z to None 
pd.get_dummies(df.replace({'[^a-c]':None},regex =True)) 

輸出:

alpha_a alpha_b  alpha_c 
0 1 0 0 
1 1 0 0 
2 0 1 0 
3 0 1 0 
4 0 0 1 
5 0 0 0 
6 0 0 0 
7 0 0 0 
+0

如果我的分類變量是隨機字符串,比如約翰,簡和瑪麗,而不是a,b和c,那麼該怎麼辦? – ExtremistEnigma

+0

您可以使用您希望排除的名稱列表。 'pd.get_dummies(df.replace([ '湯姆', '奔'],[無,無))' – JAB