Python 如何识别数据框中的标称列?
我有以下数据集(自制) 这里最后一列是类值。现在,当我将数据加载到数据帧(df)并应用Python 如何识别数据框中的标称列?,python,pandas,dataframe,data-structures,Python,Pandas,Dataframe,Data Structures,我有以下数据集(自制) 这里最后一列是类值。现在,当我将数据加载到数据帧(df)并应用 pandas.get_dummies(df) 我得到这样的输出 0_a 0_q 0_z 1_b 1_w 1_x 2_c 2_e 3_1 3_2 3_4 4_0.09 4_1.3 \ 0 1 0 0 1 0 0 1 0 1 0 0 0 1 1 0 1 0 0
pandas.get_dummies(df)
我得到这样的输出
0_a 0_q 0_z 1_b 1_w 1_x 2_c 2_e 3_1 3_2 3_4 4_0.09 4_1.3 \
0 1 0 0 1 0 0 1 0 1 0 0 0 1
1 0 1 0 0 1 0 0 1 0 1 0 0 0
2 0 0 1 0 0 1 1 0 1 0 0 0 0
3 0 0 1 0 0 1 0 1 0 0 1 1 0
df = pandas.get_dummies(df , columns=[0,1,2])
这里它也在转换分数值。如果我像这样指定列数
0_a 0_q 0_z 1_b 1_w 1_x 2_c 2_e 3_1 3_2 3_4 4_0.09 4_1.3 \
0 1 0 0 1 0 0 1 0 1 0 0 0 1
1 0 1 0 0 1 0 0 1 0 1 0 0 0
2 0 0 1 0 0 1 1 0 1 0 0 0 0
3 0 0 1 0 0 1 0 1 0 0 1 1 0
df = pandas.get_dummies(df , columns=[0,1,2])
我可以得到想要的输出
3 4 0_a 0_q 0_z 1_b 1_w 1_x 2_c 2_e
0 1 1.3 1 0 0 1 0 0 1 0
1 2 45.5 0 1 0 0 1 0 0 1
2 1 76.09 0 0 1 0 0 1 1 0
3 4 0.09 0 0 1 0 0 1 0 1
我的问题是,在不指定列号的情况下,如何做到这一点。是否可以只识别标称数据(而不是分数)的列号 IIUC我们可以使用以下方法:
资料来源:
In [151]: df
Out[151]:
0 1 2 3 4 5
0 a b c 1 1.30 d
1 q w e 2 45.50 r
2 z x c 1 76.09 f
3 z x e 4 0.09 r
解决方案:
In [155]: df.select_dtypes(['number']) \
.join(pd.get_dummies(df.select_dtypes(exclude=['number'])))
Out[155]:
3 4 0_a 0_q 0_z 1_b 1_w 1_x 2_c 2_e 5_d 5_f 5_r
0 1 1.30 1 0 0 1 0 0 1 0 1 0 0
1 2 45.50 0 1 0 0 1 0 0 1 0 0 1
2 1 76.09 0 0 1 0 0 1 1 0 0 1 0
3 4 0.09 0 0 1 0 0 1 0 1 0 0 1