gpt4 book ai didi

python - 在 Python 中为多个分类变量创建虚拟变量

转载 作者:太空宇宙 更新时间:2023-11-04 00:22:06 25 4
gpt4 key购买 nike

patient_dummies = pd.get_dummies(df['PatientSerial'], prefix='Serial_', drop_first = True)
df = pd.concat([df, patient_dummies], axis = 1)
df.drop(['PatientSerial'], inplace = True, axis = 1)


machine_dummies = pd.get_dummies(df['MachineID'], drop_first = True)
df = pd.concat([df, machine_dummies], axis = 1)
df.drop(['MachineID'], inplace = True, axis = 1)

我想将数据框 df 中的两列更改为无序分类变量。有没有更有效的方法来完成这一点,而不是分别做每一个?我在想以下方法:

patient_dummies = pd.get_dummies(df['PatientSerial'], prefix='Serial_', drop_first = True)
machine_dummies = pd.get_dummies(df['MachineID'], drop_first = True)
df = pd.concat([df, patient_dummies + machine_dummies], axis = 1)
df.drop(['PatientSerial','MachineID'], inplace = True, axis = 1)

但这没有用;它为所有条目生成“nan”而不是 0 和 1。

最佳答案

是:pandas.get_dummies()接受一个 columns 参数。如果您从 DataFrame 传递列名,它会返回虚拟化的这两列,作为您传递的整个 DataFrame 的一部分。

df = pd.get_dummies(df, columns=['PatientSerial', 'MachineID'], drop_first=True)

例如:

np.random.seed(444)
v = np.random.choice([0, 1, 2], size=(2, 10))
df = pd.DataFrame({'other_col': np.empty_like(v[0]),
'PatientSerial': v[0],
'MachineID': v[1]})

pd.get_dummies(df, columns=['PatientSerial', 'MachineID'],
drop_first=True, prefix=['Serial', 'MachineID'])

other_col Serial_1 Serial_2 MachineID_1 MachineID_2
0 2 0 0 0 1
1 1 0 0 0 1
2 2 0 0 0 0
3 2 1 0 1 0
4 2 0 1 0 0
5 2 1 0 0 1
6 2 0 1 0 0
7 2 1 0 0 1
8 2 1 0 0 0
9 2 1 0 0 1

关于python - 在 Python 中为多个分类变量创建虚拟变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48758744/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com