我正在使用数据框,其中每个条目是来自A-E的字符,表示不同的强度级别
例如:
数据框
df=
1 2 3
0 C C A
1 0 D B
2 E 0 A
我想将不同强度级别的数据从A到E阈值化为二进制矩阵。因此,我想进行逐元素比较。
如果它是一个数字,它只是:df > 0
然而,当我尝试一个字符,df > 'A'
,一个错误被抛出"TypeError: Could not compare ['A'] with block values"
我当然可以做一个'for'循环但是有没有一行,优雅的解决方案使用pandas中的数据框执行元素的逻辑操作?
我会考虑以下更通用的方法:
In [238]: df.astype(str).applymap(ord).sub(ord('@')).replace(-16,0)
Out[238]:
1 2 3
0 3 3 1
1 0 4 2
2 5 0 1
哪里:
0 - 0
1 - A
2 - B
3 - C
...
只需将Pandas版本升级到0.21.1即可。