Python 一个热编码-假人-在几个列中,然后用熊猫与原始df进行合并
我有一个df,其中有几个名义上的分类列,我想为它们创建一个假人。这是一个模拟df:Python 一个热编码-假人-在几个列中,然后用熊猫与原始df进行合并,python,pandas,Python,Pandas,我有一个df,其中有几个名义上的分类列,我想为它们创建一个假人。这是一个模拟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'], '
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
这是我从另一个问题中得到的提示,但它不起作用。我已经研究了其他四个类似的问题,但没有任何运气,因为大多数问题都是从df中的所有列中得到的假人
我想要的是这样的:
与“在列表中指定列”一起使用,然后按列名称移除分隔符,前缀设置为空字符串:
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
你所做的或多或少是正确的。 但你做到了:
for column in ['nomcols']:
dummies = pd.get_dummies(df[column])
所以你想在“nomcols”访问df。你想做的是:
dummies = pd.get_dummies(df[nomcols])
您希望在nomcols列表中的列名处访问dataframe
nomcols = ['Färg', 'Smak']
for column in nomcols:
dummies = pd.get_dummies(df[column])
上面的代码应该可以工作。谢谢-但是我没有得到前两列-Frukt和Vikt。如果我想保留它们,我该怎么办?编辑:刚刚看到编辑。感谢更改['nomcols']中的列的此行:更改nomcols中的列:。谢谢!当我使用这个方法时,第一列就消失了,但我在耶斯瑞尔的答案的帮助下找到了解决方法。很高兴知道我离这里不远了