如何在pivot_table聚合后映射pandas结果?

我有一些像这样通过的测试数据:


import numpy as np

import pandas as pd


data = [[np.random.choice(['Tmax', 'Tmin']), np.random.choice(['USA', 'FRA', 'AUS']),

         np.random.randint(1,4), np.random.choice(['Class A', 'Class B']),np.random.randint(4)] for i in range(1000)]

df = pd.DataFrame(data, columns=['temp', 'region', 'method', 'slice', 'pass'])

我已经使用np.mean函数旋转数据框,如下所示:


pv = pd.pivot_table(df, 

               index=['temp', 'method'], 

               values=['pass'],

               columns=['slice', 'region'],

              aggfunc=(np.mean))

'pass'变量的值是通过小数形式的测试的平均值,如 0.45、1.5 3.2...,但是我想用以下函数映射这些结果


def results_mapper(v):

    num_tests = np.round(v)

    if num_tests < 2:

        return 1

    elif num_tests == 2:

        return 2

    else:

        return 3

我尝试使用pv.map(results_mapper), or来映射结果,map(results_mapper, pv)但没有运气。


样本数: 在pv输出数字也能像0.5, 1.1, 1.49, 1.6, 1.9, 2.1, 2.9, 3.5


将被映射到 1, 1, 1, 2, 2, 2, 3, 3


如何通过保持数据透视表格式不变将映射函数应用于我的结果?


元芳怎么了
浏览 218回答 1
1回答

慕尼黑5688855

用 np.vectorizefunc = np.vectorize(results_mapper)pv.values[:,:] = func(pv.values)输出&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; pass&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;slice&nbsp; &nbsp; &nbsp; &nbsp;Class A&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Class B&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;region&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; AUS&nbsp; FRA&nbsp; USA&nbsp; &nbsp; &nbsp;AUS&nbsp; FRA&nbsp; USAtemp method&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;Tmax 1&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 1.0&nbsp; 1.0&nbsp; 2.0&nbsp; &nbsp; &nbsp;2.0&nbsp; 2.0&nbsp; 1.0&nbsp; &nbsp; &nbsp;2&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 1.0&nbsp; 2.0&nbsp; 1.0&nbsp; &nbsp; &nbsp;1.0&nbsp; 1.0&nbsp; 1.0&nbsp; &nbsp; &nbsp;3&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 1.0&nbsp; 2.0&nbsp; 2.0&nbsp; &nbsp; &nbsp;2.0&nbsp; 2.0&nbsp; 2.0Tmin 1&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 2.0&nbsp; 1.0&nbsp; 2.0&nbsp; &nbsp; &nbsp;2.0&nbsp; 1.0&nbsp; 2.0&nbsp; &nbsp; &nbsp;2&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 2.0&nbsp; 2.0&nbsp; 1.0&nbsp; &nbsp; &nbsp;2.0&nbsp; 1.0&nbsp; 2.0&nbsp; &nbsp; &nbsp;3&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 2.0&nbsp; 1.0&nbsp; 1.0&nbsp; &nbsp; &nbsp;2.0&nbsp; 2.0&nbsp; 1.0
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python