簡體   English   中英

用戶自定義 function 為 pandas groupby

[英]user-defined function for pandas groupby

def integration(*arg):
    try:
        return np.sum(arg)
    except:
        name = arg
        return name

嗨~這是我的 function 我想像這樣將這個 function 應用到 DataFrame

   k  g  r
0  dd cc hh
1  bb  1  9
2  dd aa ll
3  bb  4  6

我得到的結果是

     g    r
k  
bb   5    15
dd  ccaa  hhll

我想要'cc'而不是'ccaa'和'hh'而不是'hhll'。 當用戶定義函數的輸入長度超過2或更多時,我只想反映上一個。

就像是:

def integration(*arg):
    try:
        if type(np.sum(arg))==string:
            return np.sum(arg)[0:2]
        else:
            return np.sum(arg)
    except:
        name = arg
        return name

您可以執行以下操作,這更方便:

# Set the 'k' columns as index
df.set_index('k', inplace=True)

#Then you need to separate numbers from strings so you can change them to integers
df_numeric = df.apply(lambda x: x[x.str.contains(r'^\d+')]).astype(int).groupby(level=0).sum()
df_object = df.apply(lambda x:x[~(x.str.contains(r'^\d+'))])

df = pd.concat([df_numeric, df_object]).reset_index().drop_duplicates('k', keep='first')

Output:

    k   g   r
0   bb  5   15
1   dd  cc  hh

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM