如何从pandas中的映射将列的整数值更改为字符串?

时间:2015-11-06 17:45:55

标签: python pandas matplotlib

我有一个数据框,其中水果的名称是整数格式。但是,我想用实际的字符串名称替换它们。

fruit_names = {'1' : 'Grapes', '2' : 'Oranges', '3' : 'Apples'}
order_inventory = pd.DataFrame({'Year': [1997,1998,1999],'Fruit': [1,2,1], 'Qty': [12,15,12]})
print order_inventory

Fruit   Qty Year
0   1   12  1997
1   2   15  1998
2   1   12  1999

在1次操作中执行此操作的最简单方法是什么,而不是为每种水果类型单独执行此操作? [这是一个例子,所以我的名字列表中可以有更多项目]

2 个答案:

答案 0 :(得分:1)

您需要将字典设为int,因为Fruit也是int。然后只需使用map

fruit_names = {1 : 'Grapes', 2 : 'Oranges', 3 : 'Apples'}
order_inventory = pd.DataFrame({'Year': [1997,1998,1999],'Fruit': [1,2,1], 'Qty': [12,15,12]})


order_inventory['Fruit'].map(fruit_names)
Out[81]: 
0     Grapes
1    Oranges
2     Grapes
Name: Fruit, dtype: object

如果您的字典实际上是字符串并且您有许多项目,则可以执行以下操作以转换为int:

fruit_names = {int(k):str(v) for k,v in fruit_names.items()}
fruit_names
Out[101]: {1: 'Grapes', 2: 'Oranges', 3: 'Apples'}

答案 1 :(得分:0)

import pandas as pd

fruit_names = {1 : 'Grapes', 2 : 'Oranges', 3 : 'Apples'}
order_inventory = pd.DataFrame({'Year': [1997,1998,1999],'Fruit': [1,2,1], 'Qty': [12,15,12]})

convert_to_string = lambda x: fruit_names[x]

order_inventory['Fruit'] = order_inventory['Fruit'].apply(convert_to_string)

print order_inventory

>>> order_inventory
     Fruit  Qty  Year
0   Grapes   12  1997
1  Oranges   15  1998
2   Grapes   12  1999