Python 将具有唯一计算值的多列添加到数据帧

Python 将具有唯一计算值的多列添加到数据帧,python,pandas,dataframe,assign,Python,Pandas,Dataframe,Assign,我想使用原始数据框中的函数和值向数据框添加新列 创建数据帧 df = pd.DataFrame({'f1' : np.random.randn(10), 'f2' : np.random.randn(10), 'f3' : np.random.randn(10), 'f4' : np.random.randn(10), 'f5'

我想使用原始数据框中的函数和值向数据框添加新列

创建数据帧

df = pd.DataFrame({'f1'   : np.random.randn(10), 
                   'f2'   : np.random.randn(10),
                   'f3'   : np.random.randn(10),
                   'f4'   : np.random.randn(10),
                   'f5'   : np.random.randn(10)})
要应用于现有列的测试函数

def testfun(x,n):
    return x * n
函数的参数-每个新列都有不同的参数

colnum   = [1,2,3,4,5]
为要添加到数据框的新列创建新列名称

newcol         = [s + "_D" for s in df.columns]
应用该函数和该列的相应参数,遍历现有列。每个新列将被指定一个唯一的名称

此部分功能不起作用

for s in range(len(df.columns)):    
     df       = df.assign(newcol[s] = testfun(df[[df.columns[s]]], s))
新数据框应包含10列。

您可以尝试此操作

import pandas as pd
import numpy as np

df = pd.DataFrame({'f1'   : np.random.randn(10), 
                   'f2'   : np.random.randn(10),
                   'f3'   : np.random.randn(10),
                   'f4'   : np.random.randn(10),
                   'f5'   : np.random.randn(10)})

def testfun(x,n):
    return x * n

colnum = [1,2,3,4,5]
newcol = [s + "_D" for s in df.columns]
for s in range(len(df.columns)):    
    df.loc[:,newcol[s]] = df[[df.columns[s]]]*s
你可以试试这个

import pandas as pd
import numpy as np

df = pd.DataFrame({'f1'   : np.random.randn(10), 
                   'f2'   : np.random.randn(10),
                   'f3'   : np.random.randn(10),
                   'f4'   : np.random.randn(10),
                   'f5'   : np.random.randn(10)})

def testfun(x,n):
    return x * n

colnum = [1,2,3,4,5]
newcol = [s + "_D" for s in df.columns]
for s in range(len(df.columns)):    
    df.loc[:,newcol[s]] = df[[df.columns[s]]]*s
IIUC

IIUC