2016-01-12 46 views
1

我看過類似的問題,但沒有什麼能真正地匹配我的問題。如果我有值如表:將字符串劃分爲單獨的列熊貓python

value 
a 
b 
b 
c 

我想用大熊貓在列添加到該表顯示,例如:

value a b 
a 1 0 
b 0 1 
c 0 0 

我曾嘗試以下:

df['a'] = 0 

def string_count(indicator): 
    if indicator == 'a': 
     df['a'] == 1 

df['a'].apply(string_count) 

但是,這會產生:

0 None 
1 None 
2 None 
3 None 

我想至少達到硬編碼的選項(即我已經知道a,b和c出現),但如果我能夠設置字符串列然後插入一列每個唯一字符串。

我接近這個錯誤的方式嗎?

回答

1
dummies = pd.get_dummies(df.value) 

    a b c 
0 1 0 0 
1 0 1 0 
2 0 1 0 
3 0 0 1 

如果你只是想顯示獨特的事件,您可以添加:

dummies.index = df.value 
dummies.drop_duplicates() 

     a b c 
value   
a  1 0 0 
b  0 1 0 
c  0 0 1 

或者:

df = df.join(pd.get_dummies(df.value)) 

    value a b c 
0  a 1 0 0 
1  b 0 1 0 
2  b 0 1 0 
3  c 0 0 1 

在哪裏,你可以再次.drop_duplicates()只看到從valuecolumn唯一條目。

+0

我該如何改變它,使列與主數據框一起出現,而不是作爲單獨的數據框? – DGraham

+0

查看更新的答案。 – Stefan

相關問題