簡體   English   中英

如何分組應用聚合回 Python Pandas 中的數據幀?

[英]how to groupby-apply-aggregate back to a dataframe in Python Pandas?

def my_per_group_func(temp):

    # apply some tricks here
    return a, b, c, d

output =  dataframe.groupby('group_id').apply(my_per_group_func)

我的問題是如何將“輸出”聚合回具有某些列名的數據框(顯然數據框的索引是 group_id)?

通常我所做的是使用聚合函數

但這里的問題是 my_per_group_func 在這里非常復雜,不能使用通常的“聚合”函數語法來完成

有人有線索嗎?

謝謝

似乎需要返回DataFrameSeries - 檢查靈活的應用文檔

dataframe = pd.DataFrame({'group_id':[1,1,3],
                   'B':[4,5,6],
                   'C':[7,8,9],
                   'D':[1,3,5],
                   'E':[5,3,6],
                   'F':[7,4,3]})

print (dataframe)
   B  C  D  E  F  group_id
0  4  7  1  5  7         1
1  5  8  3  3  4         1
2  6  9  5  6  3         3

def my_per_group_func(x):
    #print (x)
    #some sample operations
    a = x.B + x.C
    b = x.E + x.B
    c = x.D + x.F
    d = x.F + x.E
    return pd.DataFrame({'group_id': x.group_id, 'a':a, 'b':b, 'c':c, 'd':d})

output =  dataframe.groupby('group_id').apply(my_per_group_func)
print (output)
    a   b  c   d  group_id
0  11   9  8  12         1
1  13   8  7   7         1
2  15  12  8   9         3

def my_per_group_func(x):
    #print (x)
    #some sample aggregations
    a = (x.B + x.C).mean()
    b = (x.E + x.B).sum()
    c = (x.D + x.F).median()
    d = (x.F + x.E).std()
    return pd.Series([a,b,c,d], index=['a','b','c','d'])

output =  dataframe.groupby('group_id').apply(my_per_group_func)
print (output)
             a     b    c         d
group_id                           
1         12.0  17.0  7.5  3.535534
3         15.0  12.0  8.0       NaN
dataframe['new column name'] = dataframe.groupby('group_id').transform(my_per_group_func)

暫無
暫無

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

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