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

如何使用map更新DataFrame中Size列的单位转换后数据?

问题解决:修复Size列单位转换并更新DataFrame

你的代码主要有几个问题导致无法更新Size列:

  • change_size()是批量遍历整个列表的函数,没有返回值,不符合map需要的单个元素处理要求——map需要的是能接收单个Size字符串、返回转换后数值的函数。
  • 函数里的a = [i][-1]完全多余,i本身就是单个Size值,这行等于没做任何操作。
  • 函数只做了print输出,没有返回处理后的结果,所以map(change_size())得到的全是None,赋值给Size列自然看不到正确数据。

修正后的代码

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt, seaborn as sns
%matplotlib inline

import warnings
warnings.simplefilter(action='ignore', category=FutureWarning)

inp0 = pd.read_csv("googleplaystore.csv")

# 重写处理单个Size值的函数
def convert_size(size_str):
    if size_str == 'Varies with device':
        return 0
    # 判断单位是MB还是KB
    if size_str.endswith('M'):
        # 去掉M,转成浮点数后乘以1000转KB,再转整数
        return int(float(size_str[:-1]) * 1000)
    elif size_str.endswith('k'):
        # 去掉k,转成整数
        return int(size_str[:-1])
    # 处理其他异常情况(比如空值)
    return np.nan

# 使用apply处理整个Size列
inp0['Size'] = inp0['Size'].apply(convert_size)

# 查看结果
print(inp0['Size'].head())

关键说明

  • convert_size函数专门处理单个Size字符串,返回对应的KB数值,符合apply/map的要求。
  • 使用Series.apply()方法遍历每一行的Size值,把处理后的结果直接赋值回Size列,完成更新。
  • 增加了异常情况的处理(比如空值),避免代码报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 11:36:06