python - 带有结合了两个函数的 aggfunc 的数据透视表

标签 python pandas

我想用结合了两个函数的 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'

我明白问题所在,但解决方案是什么?

最佳答案

我认为您需要 lambda - 具有 pandas 函数的解决方案 median + std (需要更改 ddof=0,因为默认情况下 pandas 中的 ddof=1):

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

什么是相同的:

aggfunc=lambda x: np.median(x) - np.std(x)

示例:

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

关于python - 带有结合了两个函数的 aggfunc 的数据透视表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43937776/

相关文章:

Pandas groupby 滚动删除索引列

python - 在Python中替换列表中所有连续且重复的元素

python - 使用 PIL 缩放图像以保持透明度和颜色?

python - 计算每个值在 pandas 列中所占百分比的函数

python - Pandas 改进

python - 删除 pandas 中的第一行

python - 偏移量前滚后加上一个月偏移量后的 Pandas 超出纳秒时间戳

python - 重构重复的 if 语句

python - 在Python中解压int + long long

python - 制作包含字符串和整数的 ndarray