You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:02:14