Python对象中的字母替换为数字

2024-06-16 11:16:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图在一个数据帧中用数字替换python对象的所有字母。你知道吗

示例:我有一列3000个课程代码,例如A0101P。我试图用相应的数字(a=1,B=2等)替换课程代码中的所有字母,因此输出看起来像“1010116”(最重要的是,是一个整数,而不是对象/字符串)

课程代码最初是一个python对象。所以我用了

course.to_string()

将其更改为字符串值。你知道吗

然后,我创建了一个映射,然后使用结构更换替换值。你知道吗

mapping = {"A": 1, "B": 2, "C": 3, "D": 4, "E": 5, "F": 6, "G": 7, "H": 8, "I": 9, "J": 10, "K": 11, "L": 12, "M": 13, "N": 14, "O": 15, "P": 16, "Q":17,"R":18, "S": 19, "T": 20,"U": 21, "V": 22, "W": 23, "X": 24, "Y": 25, "Z":26}

courseDone = course.str.replace(course["Cursus code"], mapping)

这会引起一个错误

AttributeError: 'str' object has no attribute 'str'

我也试过了

for key, value in mapping.items():
    course = course.replace(key, value)

这就产生了错误

TypeError: replace() argument 2 must be str, not int

即使数据类型是字符串。你知道吗

示例数据:

1       A0101P
2       A0111P
3       A0200P
4       A0201P
5       A0202P

期望输出:

1       1010116
2       1011116
3       1020016
4       1020116
5       1020216

我也尝试过用str()更改数据类型,结果错误是一样的。你知道吗

当我使用

for key, value in mapping.items():
    course["Cursus code"] = course["Cursus code"].replace(key, value)

我没有收到错误,但输出保持不变。你知道吗

我是python的新手,我已经尽了最大努力找到了一个解决方案,但似乎什么都不管用。 有人能帮我吗?你知道吗


Tags: 数据对象key字符串代码value错误code
3条回答

字符串作为“对象”保存在熊猫中。您可以使用dataframe的info()方法来查看哪些列是整数、对象(对于字符串)、时间戳等:

df.info()

对于您的问题,您可以使用apply方法并用所需的映射替换字符串,如下所示:

def str_to_int_map(string, mapping):

   return int(''.join([str(mapping.get(x, x)) for x in string]))
mapping = {"A": 1, "B": 2, "C": 3, "D": 4, "E": 5, "F": 6, "G": 7, "H": 8, "I": 9, "J": 10, "K": 11, "L": 12, "M": 13, "N": 14, "O": 15, "P": 16, "Q":17,"R":18, "S": 19, "T": 20,"U": 21, "V": 22, "W": 23, "X": 24, "Y": 25, "Z":26}
df['Course'] = df['Course'].apply(lambda x: str_to_int_map(x, mapping))

一个愚蠢的解决方案是逐个替换字母,与您的类似,但必须将数字映射到字符串:

for k,v in mapping.items():
    v = str(v)
    course["Cursus code"] = course["Cursus code"].str.replace(k,v)

输出:

0    1010116
1    1011116
2    1020016
3    1020116
4    1020216

您也可以使用map来用dict替换值,它非常干净。 那么关于字符串问题,是不是因为没有分配结果?你知道吗

比如: course = course.to_string() courseDone = course.str.replace(course["Cursus code"], mapping)

或者

courseDone = course.to_string().str.replace(course["Cursus code"], mapping)

相关问题 更多 >