如何将数据帧的列从char转换为ascii整数? [熊猫]

时间:2017-03-31 12:51:15

标签: python-3.x pandas

我有一个数据框,其中一列名为' label'拥有像'',' m',' n'等

我想要'标签'而是保持字母的ascii等价物。 我该怎么做?

2 个答案:

答案 0 :(得分:3)

IIUC:

In [81]:
df = pd.DataFrame({'label':list('bmn')})
df

Out[81]:
  label
0     b
1     m
2     n

In [82]:    
df['ascii'] = df['label'].apply(ord)
df

Out[82]:
  label  ascii
0     b     98
1     m    109
2     n    110

列表理解可能更快:

In [83]:
df['ascii'] = [ord(x) for x in df['label']]
df

Out[83]:
  label  ascii
0     b     98
1     m    109
2     n    110

您还可以使用map

In [85]:
df['ascii'] = df['label'].map(ord)
df

Out[85]:
  label  ascii
0     b     98
1     m    109
2     n    110

<强>计时

小df:

In [87]:
%timeit [ord(x) for x in df['label']]
%timeit df['label'].map(ord)
%timeit df['label'].apply(ord)

100000 loops, best of 3: 14 µs per loop
10000 loops, best of 3: 123 µs per loop
10000 loops, best of 3: 146 µs per loop

对于3K df:

In [89]:
%timeit [ord(x) for x in df['label']]
%timeit df['label'].map(ord)
%timeit df['label'].apply(ord)

1000 loops, best of 3: 246 µs per loop
1000 loops, best of 3: 1 ms per loop
1000 loops, best of 3: 1.02 ms per loop

所以这里列表理解比其他方法更好地扩展

答案 1 :(得分:0)

e.g。 ascii中的“a”= 97 写打印(ord(“a”))

  

打印(ORD( “A”))

答案是97