在Python Pandas中将DataFrame比较结果的布尔值转为自定义字符串
替换DataFrame比较结果中的布尔值为'higher'/'lower'
当然可以实现这个需求啦!这里有几种简单又实用的方法,帮你把布尔值替换成明确的'higher'和'lower':
方法1:使用replace()函数
这是最直观的方法,直接对布尔结果DataFrame进行值替换:
import pandas as pd # 定义原始DataFrame dfA = pd.DataFrame({'Column':[1,2,3,4]}) dfB = pd.DataFrame({'Column':[1,2,4,3]}) # 先获取比较后的布尔DataFrame compare_result = dfA > dfB # 替换布尔值为目标文本 final_df = compare_result.replace({True: 'higher', False: 'lower'}) print(final_df)
输出结果:
Column 0 lower 1 lower 2 lower 3 higher
方法2:使用numpy.where()
这种方法可以直接在生成结果时完成替换,一步到位,适合需要更灵活条件判断的场景:
import pandas as pd import numpy as np dfA = pd.DataFrame({'Column':[1,2,3,4]}) dfB = pd.DataFrame({'Column':[1,2,4,3]}) # 直接根据比较结果生成目标文本DataFrame final_df = pd.DataFrame( np.where(dfA > dfB, 'higher', 'lower'), columns=dfA.columns # 保留原列名 ) print(final_df)
输出结果和方法1一致。
方法3:使用applymap()
如果你需要对每个元素进行自定义逻辑处理,applymap()是个不错的选择:
import pandas as pd dfA = pd.DataFrame({'Column':[1,2,3,4]}) dfB = pd.DataFrame({'Column':[1,2,4,3]}) # 对布尔结果的每个元素应用lambda函数替换 final_df = (dfA > dfB).applymap(lambda x: 'higher' if x else 'lower') print(final_df)
同样能得到预期的结果。
内容的提问来源于stack exchange,提问作者nappingkid
相关产品推荐
相关产品推荐

