我已经向R提出了这个问题,但我现在正试图在熊猫中做到这一点。我正在尝试使用pandas将分类变量重新编码为整数。给出:
group
005j
005j
0k16
0fff
0fff
我想得到一系列代表相同分组的递增整数:
group intCode
005j 1
005j 1
0k16 2
0fff 3
0fff 3
答案 0 :(得分:7)
In [10]: df['intCode'] = pd.Categorical.from_array(df.group).labels
In [11]: df
Out[11]:
group intCode
0 005j 0
1 005j 0
2 0k16 2
3 0fff 1
4 0fff 1
答案 1 :(得分:2)
只需提供@herrfz答案的更新版本。 Categorical.from_array
和labels
已弃用。
df['intCode'] = pd.Categorical(df.group).codes
对我运行Python 3.6.9有用
答案 2 :(得分:1)
您可以获得唯一值
>>> df = pd.read_clipboard()
>>> groups = df['group'].unique()
索引他们
>>> groups = pd.DataFrame(groups, columns=['group']).reset_index()
然后合并(添加1从1开始而不是0):
>>> groups['index'] += 1
>>> df.merge(groups)
group index
0 005j 1
1 005j 1
2 0k16 2
3 0fff 3
4 0fff 3
[5 rows x 2 columns]