簡體   English   中英

將參數傳遞給Pandas GroupBy中的函數列表

[英]Passing arguments to a list of functions in Pandas GroupBy `agg()`

我正在嘗試在熊貓中找到GroupBy對象的某些列的minmaxmeansumstd 為此,我的原始代碼是這樣的:

df_agg = df.groupby('id')[column_list].agg(['mean', 'max', 'min', 'sum', 'std'])

但這會在std列中產生大量NaN 搜索后,我發現 std接受一個參數ddof (自由度增量),默認情況下設置為1。 這將導致除以0錯誤並給出這些NaN值。

現在,我想在上述代碼中使用的std中發送一個參數ddof=0 ,但是我不知道該怎么做。

請幫忙。

您可以創建自定義lambda函數:

f = lambda x: x.std(ddof=0)
f.__name__ = 'std_0'
df_agg = df.groupby('id')[column_list].agg(['mean', 'max', 'min', 'sum', f])

樣品

df = pd.DataFrame({'A':list('abcdef'),
                   'B':[4,5,4,5,5,4],
                   'C':[7,8,9,4,2,3],
                   'D':[1,3,5,7,1,0],
                   'E':[5,3,6,9,2,4],
                   'id':list('aaabbb')})

print (df)
   A  B  C  D  E id
0  a  4  7  1  5  a
1  b  5  8  3  3  a
2  c  4  9  5  6  a
3  d  5  4  7  9  b
4  e  5  2  1  2  b
5  f  4  3  0  4  b

column_list = ['C','D','E']

f = lambda x: x.std(ddof=0)
f.__name__ = 'std_0'
df_agg = df.groupby('id')[column_list].agg(['mean', 'max', 'min', 'sum', f])
print (df_agg)
      C                               D                               E      \
   mean max min sum     std_0      mean max min sum     std_0      mean max   
id                                                                            
a     8   9   7  24  0.816497  3.000000   5   1   9  1.632993  4.666667   6   
b     3   4   2   9  0.816497  2.666667   7   0   8  3.091206  5.000000   9   


   min sum     std_0  
id                    
a    3  14  1.247219  
b    2  15  2.943920  

暫無
暫無

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

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