pandas 为分类列中的每个值创建新列
pandas creating new columns for each value in categorical columns
我有一个 pandas 数据框,其中包含一些数字列和一些分类列。我想为每个分类列的每个值创建一个新列,并在该值为 true 的每一行中为该列赋予值 1,在该值为 false 的每一行中为该列赋予 0。所以 df 是这样的 -
col1 col2 col3
A P 1
B P 3
A Q 7
预期结果是这样的:
col1 col2 col3 A B P Q
A P 1 1 0 1 0
B P 3 0 1 1 0
A Q 7 1 0 0 1
这可能吗?有人可以帮我吗?
使用df.select_dtypes
, pd.get_dummies
with pd.concat
:
# First select all columns which have object dtypes
In [826]: categorical_cols = df.select_dtypes('object').columns
# Create one-hot encoding for the above cols and concat with df
In [817]: out = pd.concat([df, pd.get_dummies(df[categorical_cols])], 1)
In [818]: out
Out[818]:
col1 col2 col3 col1_A col1_B col2_P col2_Q
0 A P 1 1 0 1 0
1 B P 3 0 1 1 0
2 A Q 7 1 0 0 1
我有一个 pandas 数据框,其中包含一些数字列和一些分类列。我想为每个分类列的每个值创建一个新列,并在该值为 true 的每一行中为该列赋予值 1,在该值为 false 的每一行中为该列赋予 0。所以 df 是这样的 -
col1 col2 col3
A P 1
B P 3
A Q 7
预期结果是这样的:
col1 col2 col3 A B P Q
A P 1 1 0 1 0
B P 3 0 1 1 0
A Q 7 1 0 0 1
这可能吗?有人可以帮我吗?
使用df.select_dtypes
, pd.get_dummies
with pd.concat
:
# First select all columns which have object dtypes
In [826]: categorical_cols = df.select_dtypes('object').columns
# Create one-hot encoding for the above cols and concat with df
In [817]: out = pd.concat([df, pd.get_dummies(df[categorical_cols])], 1)
In [818]: out
Out[818]:
col1 col2 col3 col1_A col1_B col2_P col2_Q
0 A P 1 1 0 1 0
1 B P 3 0 1 1 0
2 A Q 7 1 0 0 1