首页 > 解决方案 > 在循环内使用 lambda 迭代列

问题描述

我有一个具有以下结构的df:

ID | M | C1 | C2 | C3  
tt | 23| 23 | 563| 234    
rt | 13| 3  | 32 | 67  
cf | 78| 67 | 90 | 90  
di | 45| 12 | 112| 34  

作为下一个操作的结果,我想遍历列并创建其他列:

additional_column1 = M+1+C1
additional_column2 = additional_column1+1+C2
additional_column3 = additional_column2+1+C3  

这样生成的 DF 将如下所示:

ID | M | C1 | C2 | C3 | AC1 | AC2 | AD3 
tt | 23| 23 | 563| 234|  47 | 611 | 846

我创建了一个 for 循环,但它用0x7f6e81e2c5e0>填充列而不是数字

循环如下所示:

for c in np.arange(start=1, stop=len(df.columns[1:])+1, step=1):
    df['AC'+str(c)] = lambda c: df.columns[c-1].add(0).sub(df.iloc[:, c])  

需要线索,我在哪里做错了。提前致谢。

标签: pythonpandaslambda

解决方案


国际大学联盟:

for c in np.arange(start=1, stop=len(df.columns[1:])+1, step=1):
    df['AC'+str(c)] = df.iloc[: , c-1].add(0).sub(df.iloc[:, c])  

推荐阅读