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

Pandas DataFrame列相乘异常:字符串重复而非数值运算求助

问题解决思路

你的核心问题是处理后的StarRating列仍为字符串类型,Python中字符串与数字相乘会触发重复操作,而非数值运算。以下是修正方案:

修正步骤

  1. 清理文本:移除"stars"和"k"后缀
  2. 转换数据类型:将字符串列转为数值类型(float/int)
  3. 执行数值乘法运算

完整修正代码

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 21:01:02