如何将pandas数据帧中的字符串值替换为整数?

时间:2015-08-06 07:01:57

标签: python pandas dataframe cosine-similarity

我有一个包含多个字符串值的Pandas DataFrame。 我想用整数值替换它们以计算相似性。 例如:

stores[['CNPJ_Store_Code','region','total_facings']].head()
Out[24]: 
    CNPJ_Store_Code      region  total_facings
1    93209765046613   Geo RS/SC       1.471690
16   93209765046290   Geo RS/SC       1.385636
19   93209765044084  Geo PR/SPI       0.217054
21   93209765044831   Geo RS/SC       0.804633
23   93209765045218  Geo PR/SPI       0.708165

我想替换region ==' Geo RS / SC' ==> 1,region ==' Geo PR / SPI' ==> 2等

  

澄清:我想自动更换,而不先创建字典,因为我事先并不知道我的地区会是什么。   有任何想法吗?我正在尝试使用DictVectorizer,但没有成功。

我确定可以通过智能方式实现这一目标,但我无法找到它。

任何熟悉解决方案的人?

3 个答案:

答案 0 :(得分:4)

您可以使用.apply()函数和字典将所有已知字符串值映射到相应的整数值:

region_dictionary = {'Geo RS/SC': 1, 'Geo PR/SPI' : 2, .... }
stores['region'] = stores['region'].apply(lambda x: region_dictionary[x])

答案 1 :(得分:4)

在我看来,你真的想要熊猫类别

http://pandas-docs.github.io/pandas-docs-travis/categorical.html

我认为你只需要将文本列的dtype更改为" category"你完成了。

stores['region'] = stores["region"].astype('category')

答案 2 :(得分:0)

你可以这样做:

df = pd.read_csv(filename, index_col = 0)  # Assuming it's a csv file.

def region_to_numeric(a):
    if a == 'Geo RS/SC':
        return 1
    if a == 'Geo PR/SPI':
        return 2


df['region_num'] = df['region'].apply(region_to_numeric)