如何在Pandas中将指定列的最后三位字符替换为另一列的值
解决方法
你要实现的price列尾部替换逻辑可以直接通过字符串截取+拼接完成,完整可运行代码如下:
import pandas as pd # 首先确保price和price_end都是字符串类型,避免截取报错 mydf['price'] = mydf['price'].astype(str) mydf['price_end'] = mydf['price_end'].astype(str) # 截取price列除最后三位外的所有内容,拼接price_end列值,得到归一化前的价格 mydf['price_norm'] = mydf['price'].str[:-3] + mydf['price_end'] # 按不同国家标点习惯做最终归一化,示例为:逗号代表小数点,点代表千位分隔 mydf['price_norm'] = mydf['price_norm'].str.replace('.', '', regex=False)\ .str.replace(',', '.', regex=False)\ .astype(float)
问题说明
你原代码的逻辑问题是仅修改了price_end列,没有对核心的price列做任何替换操作,同时全局的sum()判断也无法逐行匹配不同行的处理需求。
运行结果
基于你给出的样例数据,最终price_norm列输出结果为:
| id | price_norm |
|---|---|
| a | 22.23 |
| b | 230450330.55 |
| c | 100.55 |
内容的提问来源于stack exchange,提问作者John Smith
相关产品推荐
相关产品推荐

