用等效字母

时间:2018-02-28 17:56:56

标签: python string numbers

有一个巨大的矩阵,其元素是1到15范围内的数字。我想将矩阵转换为元素为字母的矩阵,使得1变为" a",2变为&# 34; b"等等。举个简单的例子:

import pandas as pd
import numpy as np, numpy.random
numpy.random.seed(1)
A = pd.DataFrame (np.random.randint(1,16,10).reshape(2,5)) 
# A     0   1   2   3   4
#   0   6   12  13  9   10
#   1   12  6   1   1   2

预期输出

# B     0   1   2   3   4
#   0   f   l   m   i   j
#   1   l   f   a   a   b

我可以用循环来做,但对于一个巨大的矩阵,它似乎不合逻辑。应该有更多的pythonic方式来做到这一点。在R中,chartr是替换的功能。对于1到9之间的数字,它的工作方式如下:chartr("123456789", "ABCDEFGHI", A)。 Python中的等价物是什么?

2 个答案:

答案 0 :(得分:1)

您可以使用chr

>>> import pandas as pd
>>> import numpy as np
>>> numpy.random.seed(1)
>>> df = pd.DataFrame(np.random.randint(1, 16, 10).reshape(2, 5))
>>> df

    0   1   2  3   4
0   6  12  13  9  10
1  12   6   1  1   2


>>> df = df.applymap(lambda n: chr(n + 96))
>>> df
   0  1  2  3  4
0  f  l  m  i  j
1  l  f  a  a  b

答案 1 :(得分:1)

这是一种方式。如果可能的话,我建议不要通过{ { "_id": "201807", "count": 4103 }, { "_id": "201801", "count": 4418 }, { "_id": "201752", "count": 51 }, { "_id": "201751", "count": 2608 }, { "_id": "201749", "count": 69599 } } 使用lambdaapply,因为这些是循环的,并且有开销。

pandas