有一个巨大的矩阵,其元素是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中的等价物是什么?
答案 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
}
}
使用lambda
和apply
,因为这些是循环的,并且有开销。
pandas