我有一个pandas DataFrame,有一个列的值为a,b,c,即字符串由','分割。现在我想创建新列,例如,对于a,b,c,将有新列a,列b,列c。那么a,b,c的数据在三列上得到一个真值,a,b,e的数据在a和b列上都是真的,但在c上是假的,也许更清楚地看到图片下面。怎么做?
答案 0 :(得分:3)
在str.get_dummies
之后使用astype
与强制转换为bool,并在join
之后添加B
列:
df1 = df['A'].str.get_dummies(',').astype(bool).join(df['B'])
print (df1)
a b c f B
0 True True True False 3
1 False True True True 4
针对提取列A
的{{3}}的更一般解决方案:
df = pd.DataFrame({'A':['a,b,c','b,c,f'], 'B':[3,4], 'C':[7,3]})
print (df)
A B C
0 a,b,c 3 7
1 b,c,f 4 3
df1 = df.pop('A').str.get_dummies(',').astype(bool).join(df)
print (df1)
a b c f B C
0 True True True False 3 7
1 False True True True 4 3