Python 应用对数据帧中的特定列进行操作的函数

Python 应用对数据帧中的特定列进行操作的函数,python,python-3.x,pandas,dataframe,Python,Python 3.x,Pandas,Dataframe,假设我有以下数据框(注意,这只是为了说明,不是为了解决实际问题) #df=pd.DataFrame({“id”:[1,1,1,2,2,2], #“购买”:[真,假,假,假,真,真], #“产品”:[“苹果”、“梨”、“香蕉”]*2}) id购买产品 ----+-----+--------+ 1个真苹果 1个假梨 1个假香蕉 2个假苹果 2真梨 2真正的香蕉 以及仅返回已购买产品的函数 def get_prod_purch(df): """ 获得产品 """ x=df[“购买”] 返回df.lo

假设我有以下数据框(注意,这只是为了说明,不是为了解决实际问题)

#df=pd.DataFrame({“id”:[1,1,1,2,2,2],
#“购买”:[真,假,假,假,真,真],
#“产品”:[“苹果”、“梨”、“香蕉”]*2})
id购买产品
----+-----+--------+
1个真苹果
1个假梨
1个假香蕉
2个假苹果
2真梨
2真正的香蕉
以及仅返回已购买产品的函数

def get_prod_purch(df):
"""
获得产品
"""
x=df[“购买”]
返回df.loc[x]
如果我以
groupby
的形式运行它,它的效果会非常好:

df.groupby(“id”).apply(获取产品采购)
#
id购买产品
id---+----+----+
真正的苹果
2 4 2真梨
5.2真正的香蕉
但是如果我只想在数据帧上运行它

df.apply(获取产品采购)
#KeyError:“购买”
df.apply(获取产品采购,轴=1)
#KeyError:正确
是否有一种方法可以在数据帧而不是
groupby
上运行这样的函数,即


df.apply(一些函数)
#结果
id购买产品
----+-----+--------+
1个真苹果
2真梨
2真正的香蕉
使用,因为需要为所有
数据帧应用函数:

print (df.pipe(get_prod_purch))
   id  purchase    prod
0   1      True   Apple
4   2      True    Pear
5   2      True  Banana
或者通过
DataFrame
执行以下功能:

print (get_prod_purch(df))
   id  purchase    prod
0   1      True   Apple
4   2      True    Pear
5   2      True  Banana

如果使用函数按列或按行运行
axis=1

我不知道
df.pipe
-太棒了!