使用get_dummies(),但不适用于数组

时间:2019-05-06 17:01:43

标签: python arrays pandas encoding

我正在尝试使用Pandas get_dummies对数据集中的一列进行编码,但由于未过滤该列中数组中的每个关键字,因此它返回0。

import pandas as pd
import numpy as np

# Load Movies Metadata
metadata = pd.read_csv('moviesNew1.csv', low_memory=False)
print(metadata.info())
cat_columns = ['genres']

df_processed = pd.get_dummies(metadata, 
    prefix_sep="__",columns=cat_columns)

print(df_processed.head(10))

对于正确的电影,应在电影类型中添加1;对于不匹配的电影,应添加0。

1 个答案:

答案 0 :(得分:0)

两个步骤:

您应该在列中放入要转换为data参数的内容。我的数据:

   score    genres
0      1    crime
1      2  romance
2      1   horror
3      4    crime
df_processed = pd.get_dummies(metadata['genres'])

Result:

   crime  horror  romance
0      1       0        0
1      0       0        1
2      0       1        0
3      1       0        0

现在我们得到了假人。但是,为了使它们与其他功能一起回到原始数据框中,我这样做:

df_concat = pd.concat([df_processed, metadata], axis=1)

Result:

   score    genre  crime  horror  romance
0      1    crimi      1       0        0
1      2  romance      0       0        1
2      1   horror      0       1        0
3      4    crimi      1       0        0

一步解决方案:

以下解决方案将一次性完成上述步骤。因此,如果您对单独的DF中的虚拟变量不感兴趣,请执行以下操作:

df_processed = pd.get_dummies(metadata, columns=['genre'])