我正在使用数据框,其中每个条目都是来自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中的数据框执行带字符的元素逻辑操作?
答案 0 :(得分:1)
我会考虑以下更通用的方法:
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
...
答案 1 :(得分:0)
只需将Pandas版本升级到0.21.1即可。