熊猫 - 如何替换系列中的特定值?

时间:2015-10-01 18:24:33

标签: python pandas

我有一个名为product_type的数据框,如:

df1.product_type.unique()

>> ["prod_1", "prod_2", "prod_3"]

df.prod_cost.dtype

>> dtype('O')

我正在寻找用数值[1, 2, 3]替换它的最有效方法。 感谢

2 个答案:

答案 0 :(得分:1)

使用factorize对新列进行编码:

In [2]:
df = pd.DataFrame({'a':list('abcdbcbccc')})
df

Out[2]:
   a
0  a
1  b
2  c
3  d
4  b
5  c
6  b
7  c
8  c
9  c

In [5]:
df['code'] = df['a'].factorize()[0] + 1
df

Out[5]:
   a  code
0  a     1
1  b     2
2  c     3
3  d     4
4  b     2
5  c     3
6  b     2
7  c     3
8  c     3
9  c     3

所以在你的情况下:

df1['product_type'] = df1['product_type'].factorize()[0] + 1

应该有效

答案 1 :(得分:1)

将列投射为category,然后获取代码。

df1 = pd.DataFrame({'product_type': ['prod_1'] * 3 + ['prod_2'] * 3 + ['prod_3'] * 3})
df1['product_type_code'] = df1.product_type.astype('category').cat.codes

>>> df1
  product_type  product_type_code
0       prod_1                  0
1       prod_1                  0
2       prod_1                  0
3       prod_2                  1
4       prod_2                  1
5       prod_2                  1
6       prod_3                  2
7       prod_3                  2
8       prod_3                  2