[英]Operate on columns in pandas groupby
假設我有一個 dataframe df
,它有 4 列col = ["id","date","basket","gender"]
和一個 function
def is_valid_date(df):
idx = some_scalar_function(df["basket") #returns an index
date = df["date"].values[idx]
return (date>some_date)
在拆分“split-apply-combine”時,我一直將groupby
理解為“創建一個新的數據幀”(很遺憾地說),因此如果我想將is_valid_date
應用於每組id
,我會假設我可以做到
df.groupby("id").agg(get_first_date)
但它在idx=some_scalar_function(df["basket"])
中拋出KeyError: 'basket'
如果使用GroupBy.agg
它分別處理每一列,所以不能選擇像df["basket"], df["date"]
。
解決方案是將GroupBy.apply
與您的自定義 function 一起使用:
df.groupby("id").apply(get_first_date)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.