如何创建具有不同元素值的另一列?

时间:2019-09-01 05:46:52

标签: pandas

我有一个这样的DataFrame对象

ColumnOne |  ColumnTwo
ABCD      |  red
ABCD      |  blue
EFGH      |  green
IJKL      |  white

我想要一个这样的DataFrame对象

ColumnOne |  ColumnTwo | ColumnThree
ABCD      |  red       | 0
ABCD      |  blue      | 0
EFGH      |  green     | 1
IJKL      |  white     | 2

基于ColumnOne元素,我该怎么做?

1 个答案:

答案 0 :(得分:2)

我认为您正在寻找pd.factorize()。从文档: https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.factorize.html

Series传递到pd.factorize()返回两个数组:labelsuniqueslabels是类别的数字编码,而uniques是您刚刚传入的Series中唯一值的数组。因此,您可以舍弃uniques并分配{ {1}}移至新列,如下所示:

labels

或者,如果将import pandas as pd df = pd.DataFrame({ 'ColumnOne': ['ABCD', 'ABCD', 'EFGH', 'IJKL'], 'ColumnTwo': ['red', 'blue', 'green', 'white'] }) # factorize returns (labels, uniques) and you just want labels df['ColumnThree'] = pd.factorize(df['ColumnOne'])[0] 转换为df['ColumnOne'] dtype,则可以使用此其他文章中的任何答案: Get mapping of categorical variables in pandas