具有pandas数据帧的字符的元素逻辑运算

时间:2017-12-25 22:49:18

标签: python pandas dataframe jupyter-notebook

我正在使用数据框,其中每个条目都是来自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中的数据框执行带字符的元素逻辑操作?

2 个答案:

答案 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即可。