如何将转换方法应用于熊猫中的两个变量?



我想创建一个新变量,它是数据框架子组中两个变量的点积。我知道,当我想要创建一个组级变量时,我可以使用transform方法。例如,在数据集auto(下载)中,我可以按如下方式平均品牌的价格:

import pandas as pd
import numpy as np
df = pd.read_csv("auto.csv")
#creates the brand variable
df['brand']=[k [0] for k in df.make.str.split ("")]
# average prices
df['price_mean']=df.groupby("brand")['price'].transform(np.mean)
df.head()

结果:

price_mean32.5AMC4215.67AMC4215.67AMC4215.6734.5别克6075.29别克6075.29

你可以尝试用管道连接一个函数来覆盖转换部分:

def np_dot(grp, columns):
columns = [grp[column].transform(lambda x: x) for column in columns]
return np.dot(*columns)

(
df.assign(
brand=df.make.str.split().str[0],
price_mean=lambda df: df.groupby("brand").price.transform("mean"),
size=np.where(df.length > 200, 1, 0),
)
.query('make.str.contains("Olds")', engine="python")
.assign(result=lambda df: df.groupby("brand").pipe(np_dot, ["price", "size"]))
)

相关内容

  • 没有找到相关文章