具有组合了两个功能的aggfunc的透视表

2024-09-28 01:27:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我想创建一个包含两个函数的aggfunc的透视表。我试过了

 pivot=pd.pivot_table(data, columns='Genename', values=['Mediancoverage'],index='Componentnr', aggfunc=(np.median - np.std))

得到了这个错误:

TypeError: unsupported operand type(s) for -: 'function' and 'function'

我理解这个问题,但解决办法是什么?在


Tags: columns函数dataindexnptablefunctionpd
1条回答
网友
1楼 · 发布于 2024-09-28 01:27:10

我认为您需要lambda-用pandas函数^{}+^{}(是必要的更改ddof=0,因为在pandas中默认为ddof=1):

aggfunc=lambda x: x.median() - x.std(ddof=0)

什么是相同的:

^{pr2}$

样品:

data = pd.DataFrame({
    'Genename' : ['a','a','b','b', 'b', 'b'],
    'Mediancoverage' : [4, 1, 5, 3, 7, 5],
    'Componentnr' : [1,2,1,2,1,2],        
    })
print (data)
   Componentnr Genename  Mediancoverage
0            1        a               4
1            2        a               1
2            1        b               5
3            2        b               3
4            1        b               7
5            2        b               5

pivot=pd.pivot_table(data, 
                     columns='Genename', 
                     values='Mediancoverage',
                     index='Componentnr',
                     aggfunc=lambda x: x.median() - x.std(ddof=0))

print (pivot)
Genename     a  b
Componentnr      
1            4  5
2            1  3

pivot=pd.pivot_table(data, 
                     columns='Genename', 
                     values='Mediancoverage',
                     index='Componentnr',
                     aggfunc=lambda x: np.median(x) - np.std(x))

print (pivot)
Genename     a  b
Componentnr      
1            4  5
2            1  3

相关问题 更多 >

    热门问题