我见过类似的问题,但没有什么能与我的问题相提并论。如果我有一个值表,例如:
value
a
b
b
c
我想使用pandas将列添加到表中以显示例如:
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出现了),但如果我能设置字符串列然后插入一个更好的话会更好每个唯一字符串的列。
我接近这个错误的方式吗?
答案 0 :(得分: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()
只能看到value
column
中的唯一条目。