使用熊猫将字符串列更改为几个布尔列

时间:2019-03-13 17:10:25

标签: python pandas

我有两列数据集想要重塑。
看着这个假的df:

df=pd.DataFrame([
    ['Alex', 'Apple'],['Bob', 'Banana'],['Clark', 'Citrus'], ['Diana', 'Banana'], [
'Elisa', 'Apple'], ['Frida', 'Citrus'], ['George', 'Citrus'], ['Hanna', 'Banana']
],columns=['Name', 'Fruit'])

我想有四列;名称,苹果,香蕉和柑橘,其中三个是布尔值(对/错)。
我已经看过整张纸,但实际上并不是我想要的。

3 个答案:

答案 0 :(得分:3)

我认为这应该是get_dummies的好用例:

df.set_index('Name')['Fruit'].str.get_dummies().astype(bool).reset_index()

     Name  Apple  Banana  Citrus
0    Alex   True   False   False
1     Bob  False    True   False
2   Clark  False   False    True
3   Diana  False    True   False
4   Elisa   True   False   False
5   Frida  False   False    True
6  George  False   False    True
7   Hanna  False    True   False

类似地,我们有

pd.concat([df['Name'], df['Fruit'].str.get_dummies().astype(bool)], axis=1)

     Name  Apple  Banana  Citrus
0    Alex   True   False   False
1     Bob  False    True   False
2   Clark  False   False    True
3   Diana  False    True   False
4   Elisa   True   False   False
5   Frida  False   False    True
6  George  False   False    True
7   Hanna  False    True   False

答案 1 :(得分:2)

您可以使用以下内容:

df[['Name']].join(pd.get_dummies(df.Fruit).astype(bool))

     Name  Apple  Banana  Citrus
0    Alex   True   False   False
1     Bob  False    True   False
2   Clark  False   False    True
3   Diana  False    True   False
4   Elisa   True   False   False
5   Frida  False   False    True
6  George  False   False    True
7   Hanna  False    True   False

答案 2 :(得分:2)

好像crosstab很好

pd.crosstab(df.Name,df.Fruit).astype(bool).reset_index()
Out[90]: 
Fruit    Name  Apple  Banana  Citrus
0        Alex   True   False   False
1         Bob  False    True   False
2       Clark  False   False    True
3       Diana  False    True   False
4       Elisa   True   False   False
5       Frida  False   False    True
6      George  False   False    True
7       Hanna  False    True   False