2016-01-12 47 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

相关问题