pandas中使用for循环为DataFrame批量新增多个计算列的实现方法
问题原因分析
- 你代码中的
append方法是DataFrame用来追加行数据的API,无法实现新增列的需求,这是运行结果不符合预期的核心原因。 - 新增列不需要调用
append方法,直接给DataFrame指定新列名赋值即可,该操作是pandas原生向量化操作,就算处理百万级以上的DataFrame也有很高的运行效率,完全适配大体量项目的需求。
正确实现代码
import pandas as pd data = {'Time': [20,10,15], 'Amount': [10,5,25]} df = pd.DataFrame(data) # 遍历系数范围直接新增列 for i in range(2,5): df[f'Amount i={i}'] = df['Amount'] * i print(df)
运行输出结果
注:你给出的预期输出中第三行
Amount i=4的值为75属于计算笔误,25*4的正确结果为100,上述代码输出的结果为:
Time Amount Amount i=2 Amount i=3 Amount i=4 0 20 10 20 30 40 1 10 5 10 15 20 2 15 25 50 75 100
如果确实需要i=4时取值为75,可以根据你的业务规则修改循环内的赋值逻辑即可。
内容的提问来源于stack exchange,提问作者Jack
相关产品推荐
相关产品推荐

