【问题标题】:How to write a custom aggregation function for strings?如何为字符串编写自定义聚合函数?
【发布时间】:2017-04-14 16:57:03
【问题描述】:

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

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

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

以上无效,建议?

【问题讨论】:

  • 所有匹配条件都一样吗?
  • 不,它们会根据列而变化

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


【解决方案1】:

您可以直接在groupby 对象上使用apply,然后在自定义函数中,只需返回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 添加更多逻辑,以便它执行您希望它执行的操作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-27
    • 1970-01-01
    • 2021-09-07
    • 2019-11-05
    相关资源
    最近更新 更多