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
-太棒了!