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

如何将DataFrame列中的浮点数列转换为百分比并保留1位小数

解决方法

可以通过Pandas的apply方法配合自定义函数实现需求,核心逻辑是对value列中每个列表的元素乘以100后,按示例要求格式化精度和类型:

步骤1:构造示例DataFrame

import pandas as pd

# 模拟你的原始数据
data = {
    'id': [1, 2, 3],
    'name': ['AA', 'BB', 'CC'],
    'value': [[0.0012, 0.0022, 0.365], [0.0412, 0.822, 0.03], [0.692, 0.0002, 0.56]]
}
df = pd.DataFrame(data)

步骤2:定义处理函数

这个函数会遍历列表中的每个数值,完成缩放、四舍五入,并根据数值类型转换为int或float(匹配示例中的显示格式):

def process_value_list(lst):
    processed = []
    for num in lst:
        # 先乘以100缩放
        scaled_num = num * 100
        # 四舍五入到1位小数
        rounded_num = round(scaled_num, 1)
        # 如果是整数,转成int类型;否则保留float
        if rounded_num == int(rounded_num):
            processed.append(int(rounded_num))
        else:
            processed.append(rounded_num)
    return processed

步骤3:应用函数到DataFrame

df['value'] = df['value'].apply(process_value_list)

最终结果

执行后df的内容如下:

id name          value
0   1   AA  [0.1, 0.2, 36.5]
1   2   BB   [4.1, 82.2, 3]
2   3   CC  [69.2, 0.0, 56]

简化版(不区分int/float)

如果不需要刻意把整数转为int类型,只需要保留1位小数,函数可以简化为列表推导式:

df['value'] = df['value'].apply(lambda lst: [round(num * 100, 1) for num in lst])

结果会是[0.1, 0.2, 36.5]、[4.1, 82.2, 3.0]、[69.2, 0.0, 56.0],精度符合要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 19:45:16