2017-04-14 6 views
1

私は数百万のレコードのデータフレームを持っています。データフレーム全体を1つの列 'napciente'でグループ化しようとしています。しかし、Seriesに "SI"とその他の文字列が含まれていて、集計の結果として "SI"を返す場合など、特定の一致に基づいて文字列として集計する必要がある63個の列があります。文字列のカスタム集計関数を作成する方法は?

enter image description here

ので、私は、シリーズ内の文字列を見つけ、それを返します私自身の集約を定義する必要があります。ここで私は1つのグループと切り捨てられた列のデータを投稿しています

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

上記は無効です。

+0

すべての一致条件は同じになりますか? – Grr

+0

列によって変化しません – alex

答えて

1

あなただけの列としてそれを参照するためにパンダためにpd.Seriesを返し、その後、カスタム関数に、直接groupbyオブジェクトにapplyを使用することができます、あなたがより多くのロジックを追加する必要があります。もちろん、

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に送信してください。

関連する問題