Element Wise对具有pandas数据帧的字符进行逻辑运算

问题描述 投票:1回答:2

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

python pandas dataframe jupyter-notebook
2个回答
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
...

0
投票

只需将Pandas版本升级到0.21.1即可。

© www.soinside.com 2019 - 2024. All rights reserved.