如何用简洁单行代码实现DataFrame双条件数值转字符串替换?
简洁实现Pandas数值替换需求
你可以用嵌套的numpy.where单行完成需求,一次性处理所有条件,避免分步修改导致列类型提前转为字符串的问题:
import numpy as np df['Results'] = np.where(df['Results'] <= 55, 'Low', np.where(df['Results'] >= 3500, 'High', df['Results']))
逻辑很直接:先判断数值≤55的替换为"Low",对不满足的数值再判断是否≥3500,满足则替换为"High",剩下的数值保持原样。执行后列会转为object类型,但所有替换逻辑一步完成,不需要中间过渡值。
另外也可以用pd.cut实现,写法稍复杂但同样是单行:
import pandas as pd import numpy as np df['Results'] = pd.cut(df['Results'], bins=[-np.inf, 55, 3499, np.inf], labels=['Low', None, 'High']).fillna(df['Results'])
这里通过设置区间bins,把≤55的分到"Low"组,3500及以上的分到"High"组,中间区间用None标记,最后用原数值填充None即可。
内容的提问来源于stack exchange,提问作者Gingerhaze
相关产品推荐
相关产品推荐

