Pandas 如何使用列中不同元素的值创建另一列?
我有一个像这样的DataFrame对象Pandas 如何使用列中不同元素的值创建另一列?,pandas,Pandas,我有一个像这样的DataFrame对象 ColumnOne | ColumnTwo ABCD | red ABCD | blue EFGH | green IJKL | white ColumnOne | ColumnTwo | ColumnThree ABCD | red | 0 ABCD | blue | 0 EFGH | green | 1 IJKL | wh
ColumnOne | ColumnTwo
ABCD | red
ABCD | blue
EFGH | green
IJKL | white
ColumnOne | ColumnTwo | ColumnThree
ABCD | red | 0
ABCD | blue | 0
EFGH | green | 1
IJKL | white | 2
我想要一个像这样的数据帧对象
ColumnOne | ColumnTwo
ABCD | red
ABCD | blue
EFGH | green
IJKL | white
ColumnOne | ColumnTwo | ColumnThree
ABCD | red | 0
ABCD | blue | 0
EFGH | green | 1
IJKL | white | 2
基于ColumnOne元素,我该怎么做?我想您正在寻找
pd.factorize()
。从文档中:
将序列
传递给pd.factorize()
将返回两个数组:标签
和唯一性
labels
是您类别的数字编码,uniques
是您刚刚传入的系列中唯一值的数组。因此,您可以放弃uniques
,只需将标签
分配给一个新列,如下所示:
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']
转换为categorical
dtype,您可以使用其他帖子中的任何答案:
第三列数字背后的逻辑是什么?