我正在处理IPL数据集,其中包含许多分类变量,其中一个变量是toss_winner。我为这个变量创建了虚拟变量,现在我有15列的二进制值。我想将所有这些列合并为一个单一列,列中的数字从0到14,每个数字代表一个IPL球队。
回答:
如果我理解正确,使用以下方法:
df['Team No.'] = dummies.cumsum(axis=1).ne(1).sum(axis=1)
例如,
df = pd.DataFrame({'Toss winner': ['Chennai', 'Mumbai', 'Rajasthan', 'Banglore', 'Hyderabad']})dummies = pd.get_dummies(df['Toss winner'])df['Team No.'] = dummies.cumsum(axis=1).ne(1).sum(axis=1)
结果如下:
# print(dummies) Banglore Chennai Hyderabad Mumbai Rajasthan0 0 1 0 0 01 0 0 0 1 02 0 0 0 0 13 1 0 0 0 04 0 0 1 0 0# print (df) Toss winner Team No.0 Chennai 11 Mumbai 32 Rajasthan 43 Banglore 04 Hyderabad 2