【发布时间】:2014-01-04 08:54:08
【问题描述】:
我正在寻找一种在 Stata 中复制 encode 行为的方法,它将分类字符串列转换为数字列。
x = pd.DataFrame({'cat':['A','A','B'], 'val':[10,20,30]})
x = x.set_index('cat')
结果:
val
cat
A 10
A 20
B 30
我想将 cat 列从字符串转换为整数,将每个唯一字符串以 1 对 1 的方式映射到(任意)整数。这将导致:
val
cat
1 10
1 20
2 30
或者,同样好:
cat val
0 1 10
1 1 20
2 2 30
有什么建议吗?
非常感谢一如既往, 抢
【问题讨论】:
-
也许:DataFrame([(i[1], i[0]) for i in enumerate(set(x.index))]) 然后合并?
-
重要细节:这不是 Stata 的
encode所做的。它产生一对一的映射。 -
@NickCox 我不明白这不是一对一的映射。
'A'的每个实例变成1,'B'的每个实例变成2等等。 -
这不是我在你的例子中看到的。我看到 A、A、B 映射到 10、20、30。为什么第一个 A 得到 10,第二个得到 20?如果那是您想要的,我不明白,但这取决于您;我的观点仍然是
encode在 Stata 中所做的事情。 -
@NickCox 获取映射的是
cat列,而不是val列。val列保持不变,与示例无关。重要的是cat按照我的示例从['A','A','B']变为[1,1,2]。