Skip to main content
 首页 » 编程设计

python之如何用一系列字符串替换一系列 bool 值

2025年05月04日27lyhabc

一个解决方案是使用 replace() 两次:

import pandas as pd 
s = pd.Series([True, False, False]) 
 
s = s.replace(False, "A") 
s = s.replace(True, 'B') 

然后,

Out[1]:  
0    B 
1    A 
2    A 

有没有更优雅的方法来完成这个?

请您参考如下方法:

使用 numpy.where :

s = np.where(s, 'B', 'A') 

这比 map 和 apply 快得多,如果您正在输入一个 bool 系列:

s = pd.Series(np.random.choice([True, False], 1000000)) 
 
%%timeit 
np.where(s, 'A','B') 

每个循环 4.43 毫秒 ± 94.3 微秒(7 次运行的平均值 ± 标准偏差,每次 100 次循环)

mapper={True:'B',False:'A'} 
 
%%timeit 
s.map(mapper) 

每个循环 44.1 毫秒 ± 178 µs(7 次运行的平均值 ± 标准偏差,每次 10 次循环)

%%timeit 
s.apply(lambda x: 'B' if x else 'A') 

每次循环 126 毫秒 ± 4.51 毫秒(7 次运行的平均值 ± 标准偏差,每次 10 次循环)