使用像这样的数据帧:
>>> df = pd.DataFrame([
['a', 'b', 'c'],
['d', 'e', 'f'],
['x', 'y', 'z'],
])我们可以获得每个字符的ord()映射:
>>> ordinals = df.apply(lambda x: [ord(c) for c in x])
>>> ordinals
0 1 2
0 97 98 99
1 100 101 102
2 120 121 122有没有可能以向量化的方式得到相同的结果,这样我们就可以避免在每一行上使用apply,这对于1.5M+行来说是非常慢的?
发布于 2021-10-14 09:55:07
使用applymap
df.applymap(ord)例如:
>>> df.applymap(ord)
0 1 2
0 97 98 99
1 100 101 102
2 120 121 122
>>> 或者使用np.vectorize (可能更快,因为它是numpy):
>>> df[:] = np.vectorize(ord)(df)
>>> df
0 1 2
0 97 98 99
1 100 101 102
2 120 121 122
>>> https://stackoverflow.com/questions/69568631
复制相似问题