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

使用for循环对DataFrame列值平方仅生效最后一列,如何解决?

问题描述

我有一个包含2列整数值的DataFrame,原始数据如下:

ApplesBananas
52
104

目标是对每一列的数值进行平方处理,处理后的结果应该是:

ApplesBananas
254
10016

我尝试用for循环实现,但没达到预期效果。先创建列名列表:

Columns = [Apples, Bananas]

然后写循环:

for column in Columns:
    df['squared'] = df[column]**2

这个循环只对最后一列做了平方处理。

解决方案

方法1:直接对整个DataFrame做平方运算(最简洁)

Pandas支持元素级批量运算,一行代码即可完成需求:

df = df ** 2

如果需要保留原始数据可以创建新DataFrame:

df_squared = df ** 2

方法2:修正for循环逻辑

你的循环问题在于每次都将平方结果赋值给同一个squared列,导致前一列的结果被后续循环覆盖。正确写法如下:

覆盖原列

columns = ['Apples', 'Bananas']  # 注意列名需用字符串包裹,避免被识别为变量
for column in columns:
    df[column] = df[column] ** 2

创建带标识的新列

如果不想修改原数据,可创建对应命名的新列:

columns = ['Apples', 'Bananas']
for column in columns:
    df[f'{column}_squared'] = df[column] ** 2

方法3:使用apply方法

通过apply对每一列应用平方函数:

df = df.apply(lambda x: x ** 2)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 06:15:39