如何对Pandas中列表格式列的每个元素执行乘法运算
你遇到的报错是因为代码直接对列表整体执行浮点数乘法,Python原生不支持列表与浮点数的乘法运算,同时你原代码里的in x逻辑完全不符合元素级运算的需求。
方案1:逐行遍历列表元素(适合小数据集)
直接在apply的lambda函数中用列表推导式遍历列表内的每个元素执行乘法:
df['Amount'] = df['Amount'].apply(lambda x: [num * 0.01 for num in x])
如果需要兼容非列表值、空列表、非数字元素的异常场景,可以加判断逻辑:
df['Amount'] = df['Amount'].apply( lambda x: [num * 0.01 for num in x if isinstance(num, (int, float))] if isinstance(x, list) else x )
方案2:打散聚合运算(适合大数据集,性能更高)
如果数据量较大,explode+聚合的方式比逐行apply效率更高:
# 把Amount列的列表元素拆分为单独行 df = df.explode('Amount') # 对单个数值执行乘法 df['Amount'] = df['Amount'] * 0.01 # 按ID分组重新聚合成列表 df = df.groupby('ID', as_index=False)['Amount'].agg(list)
内容的提问来源于stack exchange,提问作者user16599218
相关产品推荐
相关产品推荐

