【问题标题】:python pandas - convert values to column names and fill with zeros and ones [duplicate]python pandas - 将值转换为列名并用零和一填充[重复]
【发布时间】:2022-01-16 05:51:45
【问题描述】:

我需要将分类值转换为列名并用零和一填充。

x = pd.DataFrame({'province' : ['Ontario', 'Manitoba', 'Quebec'], 'species' : ['a', 'b', 'c']})

   province species
0   Ontario       a
1  Manitoba       b
2    Quebec       c

我想重塑上面的数据框,使species 中的值变成列名,新列的值表示存在或不存在。新的数据框应如下所示:

   province  a  b  c
0   Ontario  1  0  0
1  Manitoba  0  1  0
2    Quebec  0  0  1

【问题讨论】:

  • x = pd.get_dummies(x, columns=['species']) like this answer or x = pd.get_dummies(x, columns=['species'], prefix='', prefix_sep='') 以获得精确输出。
  • @Henry,我没有找到不添加前缀的选项
  • @mozway , prefix='', prefix_sep='') 的第二个选项可以正常工作,不是吗?喜欢here
  • 你说得对,我出于某种原因尝试了 False

标签: python pandas


【解决方案1】:

你可以使用crosstab:

(pd.crosstab(x['province'], x['species'])
   .reset_index().rename_axis(None, axis=1)
)

输出:

   province  a  b  c
0  Manitoba  0  1  0
1   Ontario  1  0  0
2    Quebec  0  0  1

注意。 crosstab 将为您提供 number 找到的值,因此如果您有重复项,您可以使用 2/3/etc。

get_dummies:

pd.get_dummies(x, columns=['species'], prefix='', prefix_sep='')

输出:

   province  a  b  c
0   Ontario  1  0  0
1  Manitoba  0  1  0
2    Quebec  0  0  1

【讨论】:

    猜你喜欢
    • 2020-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-22
    • 1970-01-01
    相关资源
    最近更新 更多