【问题标题】:Duplicate columns from Pandas get_dummies来自 Pandas get_dummies 的重复列
【发布时间】:2019-10-31 08:07:24
【问题描述】:

获取如下数据集(来自df.head()的输出)

individual  states
1           Alaska, Hawaii 
2           Hawaii, Alaska
3           Kansas, Iowa, Maryland
4           New Jersey, Newada
5           Newada, New Jersey

如果我跑

df['states'].str.get_dummies(sep=',')

我得到以下内容

    Hawaii  Iowa    Maryland    New Jersey  Newada  Alaska  Hawaii  Kansas  New Jersey  Newada
0   1   0   0   0   0   1   0   0   0   0
1   0   0   0   0   0   1   1   0   0   0
2   0   1   1   0   0   0   0   1   0   0
3   0   0   0   0   1   0   0   0   1   0
4   0   0   0   1   0   0   0   0   0   1

注意重复(重复)的列。多列出现的值不同,所以我不能只删除它们。问题出在哪里,我该怎么做?提前致谢!

【问题讨论】:

    标签: pandas


    【解决方案1】:

    问题是分隔符,需要', ',否则得到一些带有空格的列名,没有什么不同,所以创建新列:

    df1 = df['states'].str.get_dummies(sep=',')
    
    print (df1.columns)
    Index([' Alaska', ' Hawaii', ' Iowa', ' Maryland', ' New Jersey', ' Newada',
           'Alaska', 'Hawaii', 'Kansas', 'New Jersey', 'Newada'],
          dtype='object')
    

    print (df1)
        Alaska   Hawaii   Iowa   Maryland   New Jersey   Newada  Alaska  Hawaii  \
    0        0        1      0          0            0        0       1       0   
    1        1        0      0          0            0        0       0       1   
    2        0        0      1          1            0        0       0       0   
    3        0        0      0          0            0        1       0       0   
    4        0        0      0          0            1        0       0       0   
    
       Kansas  New Jersey  Newada  
    0       0           0       0  
    1       0           0       0  
    2       1           0       0  
    3       0           1       0  
    4       0           0       1  
    

    df2 = df['states'].str.get_dummies(sep=', ')
    print (df2)
       Alaska  Hawaii  Iowa  Kansas  Maryland  New Jersey  Newada
    0       1       1     0       0         0           0       0
    1       1       1     0       0         0           0       0
    2       0       0     1       1         1           0       0
    3       0       0     0       0         0           1       1
    4       0       0     0       0         0           1       1
    

    【讨论】:

    • 就是这样,谢谢!但是,我使用 .str.replace(" ","") 删除空格,而不是将空格放在分隔符中
    猜你喜欢
    • 2019-08-11
    • 1970-01-01
    • 2016-09-19
    • 1970-01-01
    • 2013-08-19
    • 2015-09-27
    • 1970-01-01
    • 2021-07-27
    • 2017-01-22
    相关资源
    最近更新 更多