一个热编码的假人在几个列,然后concating与原始df与Pandas

2024-09-19 23:26:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个df,其中有几个名义上的分类列,我想为它们创建一个假人。这是一个模拟数据框:

data = {'Frukt':[1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
        'Vikt':[23, 45, 31, 28, 62, 12, 44, 42, 23, 32], 
        'Färg':['grön', 'gul', 'röd', 'grön', 'grön', 'gul', 'röd', 'röd', 'gul', 'grön'], 
        'Smak':['god', 'sådär', 'supergod', 'rälig', 'rälig', 'supergod', 'god', 'god', 'rälig', 'god']} 

df = pd.DataFrame(data) 

我尝试过命名要从中获取假人的列:

nomcols = ['Färg', 'Smak']

for column in ['nomcols']:
    dummies = pd.get_dummies(df[column])

df[dummies.columns] = dummies

这是我从另一个问题中得到的提示,但没用。我已经看了其他四个问题是相似的,但没有任何运气,因为他们中的大多数人都得到了来自所有栏目的虚拟数据

我想要的是这样的:

enter image description here


Tags: 数据dfdatacolumnrgpd名义gr
3条回答

^{}与指定列表中的列一起使用,然后按列名称移除分隔符,前缀设置为空字符串:

nomcols = ['Färg', 'Smak']

df = pd.get_dummies(df, columns=nomcols, prefix='', prefix_sep='')
print (df)
   Frukt  Vikt  grön  gul  röd  god  rälig  supergod  sådär
0      1    23     1    0    0    1      0         0      0
1      2    45     0    1    0    0      0         0      1
2      3    31     0    0    1    0      0         1      0
3      4    28     1    0    0    0      1         0      0
4      5    62     1    0    0    0      1         0      0
5      6    12     0    1    0    0      0         1      0
6      7    44     0    0    1    1      0         0      0
7      8    42     0    0    1    1      0         0      0
8      9    23     0    1    0    0      1         0      0
9     10    32     1    0    0    1      0         0      0
nomcols = ['Färg', 'Smak']

for column in nomcols:
    dummies = pd.get_dummies(df[column])

上面的代码应该有用

你所做的或多或少是正确的。 但你做到了:

for column in ['nomcols']:
    dummies = pd.get_dummies(df[column])

所以你想在nomcols访问df。你想做的是:

dummies = pd.get_dummies(df[nomcols])

您希望访问nomcols列表中列名处的数据帧

相关问题 更多 >