在DataFrame中将布尔值转换为字符串

8

这篇文章源自这个帖子,但我发现了一个小问题。

使用df = df.replace({True: 'TRUE', False: 'FALSE'}),如果一个值是10,它将被替换。我只想替换实际上是TrueFalse<class 'bool'>的值。

我该怎么做?

1个回答

15

你可以使用df.where来完成此操作,这样你只会替换bool类型。

import pandas as pd

mask = df.applymap(type) != bool
d = {True: 'TRUE', False: 'FALSE'}

df = df.where(mask, df.replace(d))

输入:

df = pd.DataFrame({'vals': [1, 0, 1.0, 'True', True, False],
                   'ids': [78, 'kitten', True, False, 'orange', 9]})

输出:

    vals     ids
0      1      78
1      0  kitten
2      1    TRUE
3   True   FALSE
4   TRUE  orange
5  FALSE       9

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接