为什么熊猫的get_dummies函数也不能执行“枢轴”?

时间:2018-11-05 23:02:19

标签: python pandas machine-learning

我有一个熊猫数据框,如下所示:

Customer      Product
   A           Table
   A           Chair
   A           Desk

当我在Product上运行Pandas get_dummies函数时,我得到了:

Customer   Product_Table    Product_Chair    Product_Desk
   A             1                 0                0 
   A             0                 1                0
   A             0                 0                1

这在预建模方面是否正确?似乎我要在3次不同的时间向客户A提供信息。我第一次说的是只有桌子,没有椅子或桌子,但实际上它们都是三个。

这如何影响模型?我的直觉告诉我,当我进行这种类型的转换时,我应该仅以1行结尾?那正确吗?如果是这样,为了消除“重复”的行,我在做错什么还是需要添加什么?

以下是我使用的语法:

# Create a list of features to dummy
todummy_list = []
for col_name in sdf.columns:
    if sdf[col_name].dtypes == 'object' and (col_name != 'Customer' ):
        todummy_list.append(col_name)
print(todummy_list)


# Function to dummy all the categorical variables used for modeling
def dummy_df(df, todummy_list):
    for x in todummy_list:
        dummies = pd.get_dummies(sdf[x], prefix=x, dummy_na=False)
        df = df.drop(x, 1)
        df = pd.concat([df, dummies], axis=1)
    return df

sdf = dummy_df(sdf, todummy_list)

print(sdf.head(5))

2 个答案:

答案 0 :(得分:1)

要消除“重复的行”,您只需使用pd.crosstab

res = pd.crosstab(df['Customer'], df['Product'])

print(res)

Product   Chair  Desk  Table
Customer                    
A             1     1      1

答案 1 :(得分:0)

您创建的列表为空。您需要填写它,例如:

todummy_list = ['age','sex','working-class']