Python 熊猫:如何将函数仅应用于数据帧的一部分,并将结果追加回数据帧?

Python 熊猫:如何将函数仅应用于数据帧的一部分,并将结果追加回数据帧?,python,list,pandas,dataframe,stat,Python,List,Pandas,Dataframe,Stat,我创建了以下数据框 User Week1 Week2 UserA 5 7 UserB 7 0 UserC 8 20 从这个原始列表中 List = [['UserA',5,7],['UserB',7,0],['UserC',8,20]] 我想为每个用户每周计算一个公式,并为这些公式创建结果的第三列和第四列 问题是,当我尝试执行以下操作时,我得到一个“TypeError:无法将…转换为数字”: return DF.apply(lambd

我创建了以下数据框

User    Week1  Week2

UserA   5      7
UserB   7      0
UserC   8     20
从这个原始列表中

List = [['UserA',5,7],['UserB',7,0],['UserC',8,20]]
我想为每个用户每周计算一个公式,并为这些公式创建结果的第三列和第四列

问题是,当我尝试执行以下操作时,我得到一个“TypeError:无法将…转换为数字”:

    return DF.apply(lambda x: (x - x.mean()) / x.std())
但以下方法仍然有效:

 Python_Sublists = [subli[1:3] for subli in List]
 >>[[5,7],[7,0],[8,20]]

DF = pd.DataFrame(Python_Sublists,columns=['Week1','Week2'])

return DF.apply(lambda x: (x - x.mean()) / x.std())
然后,我就可以知道如何将这些列表追加到原始列表中,尽管我不知道如何再次从数据帧添加到列表中。是否有更直接的方法仅将函数应用于数值变量?另外,您将如何将pandas数据帧更改回其原始列表形式?

不应该df[['week1','week2']].applylambda x:x-x.mean/x.std工作?第一列不是数字数据。我确信这就是问题的根源

如果需要,将新的数据帧“附加”到原始数据帧,可以简单地为:df[['c3','c4']]=df[['week1','week2']].applylambda x:x-x.mean/x.std。新列将命名为“c3”和“c4”