Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 一个热编码-假人-在几个列中,然后用熊猫与原始df进行合并_Python_Pandas - Fatal编程技术网

Python 一个热编码-假人-在几个列中,然后用熊猫与原始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'], '

我有一个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'], 
        '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中的列:。谢谢!当我使用这个方法时,第一列就消失了,但我在耶斯瑞尔的答案的帮助下找到了解决方法。很高兴知道我离这里不远了