2017-04-14 125 views
1

我有一個數百萬記錄的數據框,我試圖讓整個數據框按一列'napciente'分組,這是完成的。但有63列,我需要根據特定的匹配聚合爲字符串,例如,如果系列包含「SI」和任何其他字符串我想要返回該「SI」作爲我的聚合結果。如何爲字符串編寫自定義聚合函數?

enter image description here

所以我需要定義自己的聚集是發現在該系列中的字符串,並將其返回。這裏我只發佈數據爲1組和截斷列

data.groupby('npaciente')['asistencia'].apply(lambda x: if x.str.find("SI"): return "SI") 

以上是無效的,建議?

+0

所有的比賽條件都一樣嗎? – Grr

+0

不,它們根據列進行更改 – alex

回答

1

您可以直接在groupby對象使用apply,然後在自定義函數,只是爲了回報pd.Series大熊貓指它作爲列:

def agg_func(group): 
    """group is actually a dataframe containing only the relevant rows""" 
    result = {} 
    if group["asistencia"].str.find("SI").any() 
     result["asistencia"] = "SI" 
    return pd.Series(result) 

data.groupby('npaciente').apply(agg_func) 

當然,你需要添加更多的邏輯到agg_func,以便它做你想做的事情。

相關問題