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

如何处理Pandas Series中的列表元素并计算分数占比百分比

解决Pandas分数字符串转百分比列的问题

问题原因

你用str.split('/')得到的是每个元素为列表的Series,numbers[0]只会取到Series的第一行元素(比如[1,1]),无法批量处理所有行,所以需要用Pandas的批量处理方法来转换。

方法一:用str.get()拆分分子分母

通过str.get()提取每个列表的分子(第0位)和分母(第1位),转成整数后计算百分比:

# 提取分子并转为整数
df_data['numerator'] = df_data['prize_share'].str.split('/').str.get(0).astype(int)
# 提取分母并转为整数
df_data['denominator'] = df_data['prize_share'].str.split('/').str.get(1).astype(int)
# 计算百分比数值(如1/1得到100.0)
df_data['share_pct'] = (df_data['numerator'] / df_data['denominator']) * 100
# 可选:转成带%的字符串格式(如100%、25%)
df_data['share_pct'] = df_data['share_pct'].apply(lambda x: f"{x:.0f}%")

方法二:用apply()批量处理每个列表

直接对拆分后的Series使用apply,遍历每个列表完成计算:

# 直接计算百分比数值
df_data['share_pct'] = df_data['prize_share'].str.split('/').apply(lambda lst: (int(lst[0])/int(lst[1]))*100)
# 转成带%的字符串格式
df_data['share_pct'] = df_data['share_pct'].apply(lambda x: f"{x:.0f}%")

方法三:正则提取一步到位

如果分数格式固定,用正则直接提取分子分母,跳过列表拆分步骤:

import re

def convert_to_pct(score_str):
    num, den = re.findall(r'\d+', score_str)
    return f"{(int(num)/int(den))*100:.0f}%"

df_data['share_pct'] = df_data['prize_share'].apply(convert_to_pct)

内容的提问来源于stack exchange,提问作者Aadvik

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 19:07:28