首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我想用Python将范畴变量转换为数字变量。

我想用Python将范畴变量转换为数字变量。
EN

Stack Overflow用户
提问于 2018-10-24 19:35:48
回答 4查看 1.3K关注 0票数 1

我有一个有绝对变量的数据。我希望使用以下逻辑将它们转换为数字:

我有两个列表,一个包含列中不同的分类值,第二个列表包含每个类别的值。现在,我需要映射这些值,而不是那些分类的值。

例如:

代码语言:javascript
复制
List_A = ['A','B','C','D','E']

List_B = [3,2,1,1,2]

我需要用3代替A,用2代替B,用1代替C和D,用2代替E。

有没有办法在Python中做到这一点。

我可以通过应用多个for循环来实现这一点,但是我正在寻找一些更简单的方法,或者一些直接的函数(如果有的话)。

任何帮助都是非常感谢的,谢谢。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2018-10-24 19:40:01

创建映射dict

代码语言:javascript
复制
List_A = ['A','B','C','D','E',]

List_B = [3,2,1,1,2]
d=dict(zip(List_A, List_B))

new_list=['A','B','C','D','E','A','B']
new_mapped_list=[d[v] for v in new_list if v in d]
new_mapped_list

或者定义一个函数并使用地图

代码语言:javascript
复制
List_A = ['A','B','C','D','E',]

List_B = [3,2,1,1,2]

d=dict(zip(List_A, List_B))

def mapper(value):
    if value in d:
        return d[value]
    return None

new_list=['A','B','C','D','E','A','B']
map(mapper,new_list)
票数 1
EN

Stack Overflow用户

发布于 2018-10-24 19:47:21

假设df是您的数据框架,而“类别”是包含您的类别的列的名称:

代码语言:javascript
复制
df[df.Category == "A"] = 3,2, 1, 1, 2
df[(df.Category == "B") | (df.Category == "E") ] = 2
df[(df.Category == "C") | (df.Category == "D") ] = 1
票数 0
EN

Stack Overflow用户

发布于 2018-10-24 19:54:34

如果您只需要将一个列表中的值替换为另一个列表中的值,结构就像您所说的那样。两个列表,相同的长度和相同的位置,那么您只需要这样:

代码语言:javascript
复制
list_a = []
list_a = list_b

一个更复杂的解决方案应该是这样的,它的函数将创建一个字典,您可以在其他列表中使用:

代码语言:javascript
复制
# we make a function
def convert_list(ls_a,ls_b):
    dic_new = {}
    for letter,number in zip(ls_a,ls_b):
        dic_new[letter] = number
    return dic_new

这将使字典与您需要的组合。您传递两个列表,然后可以在其他列表上使用该字典:

代码语言:javascript
复制
List_A = ['A','B','C','D','E']
List_B = [3,2,1,1,2]

dic_new = convert_list(ls_a, ls_b)

other_list = ['a','b','c','d']

for _ in other_list:
    print(dic_new[_.upper()])

# prints
3
2
1
1

干杯

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52976698

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档