Pandas DataFrame列相乘异常:字符串重复而非数值运算求助
问题解决思路
你的核心问题是处理后的StarRating列仍为字符串类型,Python中字符串与数字相乘会触发重复操作,而非数值运算。以下是修正方案:
修正步骤
- 清理文本:移除"stars"和"k"后缀
- 转换数据类型:将字符串列转为数值类型(float/int)
- 执行数值乘法运算
完整修正代码
import pandas as pd # 初始化数据 df_starrating = pd.DataFrame({'StarRating': ['1.1k stars','900 stars','2.5k stars']}) # 第一步:清理文本,移除"stars"和多余空格 df_starrating['StarRating'] = df_starrating['StarRating'].str.replace('stars', '').str.strip() # 第二步:移除"k"并转换为数值类型 df_starrating['StarRating'] = pd.to_numeric(df_starrating['StarRating'].str.replace('k', '')) # 第三步:执行乘法运算 df_starrating['StarRating'] = df_starrating['StarRating'] * 5 print(df_starrating)
输出结果
StarRating 0 5.5 1 4500.0 2 12.5
额外说明
如果你的实际需求是把"k"当作千位(比如1.1k=1100,再乘5得5500),可以调整代码处理倍数关系:
# 处理k为千位的场景 def convert_rating(s): s = s.replace('stars', '').strip() if 'k' in s: return float(s.replace('k', '')) * 1000 * 5 else: return float(s) * 5 df_starrating['StarRating'] = df_starrating['StarRating'].apply(convert_rating)
内容的提问来源于stack exchange,提问作者JJH
相关产品推荐
相关产品推荐

