我有一个熊猫数据框,如下所示:
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))
答案 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']