【发布时间】:2020-01-31 19:15:06
【问题描述】:
我正在尝试在 Pandas DataFrame 中用数字替换 python 对象的所有字母。
示例:我有一列包含 3000 个课程代码,例如。 A0101P。我试图用相应的数字(A = 1,B = 2 等)替换课程代码中的所有字母,所以输出看起来像这样“1010116”(最重要的是,是一个整数而不是一个对象/字符串)
课程代码最初是一个 python 对象。所以我用过
course.to_string()
将其更改为字符串值。
然后,我创建了一个映射,然后使用 str.replace 替换值。
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 新手,我已尽力寻找解决方案,但似乎没有任何效果。 谁能帮帮我?
【问题讨论】:
-
请改用
course.replace(course["Cursus code"], mapping)。并将 str 值放入您的映射中:{"A": "1", "B": "2", "C": "3", "D": "4", ...}最后将结果转换为int -
"课程代码最初是一个 python 对象。所以我使用 course.to_string() 将其更改为字符串值。"字符串是 Python 中的对象。你的意思是
course是pandas.Dataframe?
标签: python python-3.x string pandas