如何基于DataFrame首列生成7个2倍倍数的新列?
解决方法
直接用pandas的iloc定位第一列,循环生成新列即可,给你具体代码:
首先准备示例DataFrame(替换成你自己的即可):
import pandas as pd # 示例DataFrame,第一列列名任意 df = pd.DataFrame({ '原始第一列': [1,2,3,4,5], '其他列1': [10,20,30,40,50], '其他列2': [100,200,300,400,500] })
执行以下代码生成7个新列(乘以2的1到7倍,即2、4、6...14):
# 提取第一列,不管列名是什么都能用 first_column = df.iloc[:, 0] # 循环生成7个新列 for num in range(1, 8): multiplier = 2 * num # 自定义新列名称,可按需修改 df[f'乘{multiplier}倍列'] = first_column * multiplier
如果需要的是乘以2的幂次(2、4、8、16...128,即2¹到2⁷),把循环里的multiplier改成2 ** num即可:
for num in range(1, 8): multiplier = 2 ** num df[f'乘{multiplier}倍列'] = first_column * multiplier
常见出错原因
- 只计算了数值但没赋值回DataFrame的新列,等于白计算
- 提取第一列时用错方法,比如只取了列名而非列数据(比如用
df.columns[0]代替df.iloc[:,0]) - 循环范围写错,导致生成的列数不是7个
运行完代码后,直接打印df就能看到新增的7列数据。
内容的提问来源于stack exchange,提问作者Attahir Umar Mainika
相关产品推荐
相关产品推荐

