如何为字符串编写自定义聚合函数?

时间:2017-04-14 16:57:04

标签: python string python-3.x pandas anaconda

我有一个包含数百万条记录的数据框,我试图让整个数据框按一列'napciente'分组,即可完成。但是有63列我需要根据特定匹配聚合为字符串,例如,如果系列包含“SI”和任何其他字符串我想要返回“SI”作为我的聚合结果。

enter image description here

所以我需要定义自己的聚合,找到系列中的字符串并返回它。这里我只发布1组数据和截断列

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

以上是无效的,建议?

1 个答案:

答案 0 :(得分:1)

您可以直接在apply对象上使用groupby,然后在自定义函数中,只需返回pd.Series,以便pandas将其称为列:

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添加更多逻辑,以便它能够执行您想要的操作。