从一列的值向DataFrame添加新列

时间:2018-03-23 09:14:51

标签: python pandas

我有一个pandas DataFrame,有一个列的值为a,b,c,即字符串由','分割。现在我想创建新列,例如,对于a,b,c,将有新列a,列b,列c。那么a,b,c的数据在三列上得到一个真值,a,b,e的数据在a和b列上都是真的,但在c上是假的,也许更清楚地看到图片下面。怎么做?

enter image description here

1 个答案:

答案 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