gpt4 book ai didi

python - Pandas 将具有不同参数值的函数应用于不同的列

转载 作者:太空宇宙 更新时间:2023-11-03 14:14:24 24 4
gpt4 key购买 nike

我有两个数据框,一个(p)df包含要转换的列,第二个(a)包含pd.series形式的转换参数:

p=np.random.rand(5,3) #create data frame
cols=["A","B","C"]
df1=pd.DataFrame(p,columns=cols)
a=np.array([0.3,0.4,0.5]) # create series of transform parameters
a=pd.Series(a,index=cols)

我想知道如何迭代 df 列以使用适当的转换参数转换每个列,如下所示:

df1.apply(stats.boxcox,lmbda=a)

这当然行不通。我的临时解决方案只是一个蛮力函数:

def boxcox_transform(df,lambdas):
df1=pd.DataFrame(index=df.index)
for column in list(df):
df1[column]=stats.boxcox(df[column],lambdas[column])
return(df1)
boxcox_transform(df1,a)

我想知道是否有更优雅的解决方案,例如 R CRAN maply ,它可以迭代两个列表

最佳答案

您可以使用 lambda:

result_df = df1.apply(lambda col: stats.boxcox(col, a.loc[col.name]))

关于python - Pandas 将具有不同参数值的函数应用于不同的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48288363/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com