Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何识别数据框中的标称列?_Python_Pandas_Dataframe_Data Structures - Fatal编程技术网

Python 如何识别数据框中的标称列?

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

我有以下数据集(自制)

这里最后一列是类值。现在,当我将数据加载到数据帧(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    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