如何使用单个aggfunc格式化多个值的pivot_table输出。多个值应该并排出现
数据帧为:
kpi_date ssaname bts_name call_volume call_drop
0 2015-09-01 Bangalore 1002_NUc_Marathalli 8962 0.62
1 2015-09-03 Bangalore 1002_NUc_Marathalli 6567 1.19
2 2015-09-02 Bangalore 1002_NUc_Marathalli 7033 0.63
3 2015-09-01 Bangalore 1003_IU2_Munnekolalu 4659 1.17
4 2015-09-02 Bangalore 1003_IU2_Munnekolalu 6671 0.46
我希望输出为:
2015-09-01 2015-09-02
bts_name, call_volume call_drop call_volume call_drop
使用pivot_table
发布于 2015-10-28 20:15:51
您可以使用groupby或pivot_table函数来聚合call_volume和call_drop。
Python代码:
# Method 1: Using pivot_table
pd.pivot_table(df,index=["kpi_date","bts_name"],aggfunc=np.average)
# Method 2: Using groupby
df.groupby(["kpi_date", "bts_name"]).agg({"call_volume": np.average, "call_drop": np.average})
输出:
kpi_date bts_name call_drop call_volume
9/1/2015 1002_NUc_Marathalli 0.62 8962
1003_IU2_Munnekolalu 1.17 4659
9/2/2015 1002_NUc_Marathalli 0.63 7033
1003_IU2_Munnekolalu 0.46 6671
9/3/2015 1002_NUc_Marathalli 1.19 6567
编辑
下面是将kpi_date
作为列获取的代码
# Python code
df.pivot_table(['call_volume', 'call_drop'], ['bts_name'], 'kpi_date')
call_volume call_drop
kpi_date 9/1/2015 9/2/2015 9/3/2015 9/1/2015 9/2/2015 9/3/2015
bts_name
1002_NUc_Marathalli 8962 7033 6567 0.62 0.63 1.19
1003_IU2_Munnekolalu 4659 6671 NaN 1.17 0.46 NaN
发布于 2015-12-15 01:19:35
这就是你要找的东西吗?注意:为了便于打印,我将您的列重命名为“call_v”和“call_d”。
kpi_date ssaname bts_name call_v call_d
0 2015-09-01 Bangalore 1002_NUc_Marathalli 8962 0.62
1 2015-09-03 Bangalore 1002_NUc_Marathalli 6567 1.19
2 2015-09-02 Bangalore 1002_NUc_Marathalli 7033 0.63
3 2015-09-01 Bangalore 1003_IU2_Munnekolalu 4659 1.17
4 2015-09-02 Bangalore 1003_IU2_Munnekolalu 6671 0.46
df.groupby(['bts_name','kpi_date']).mean().stack().unstack(level=1).unstack(level=1)
kpi_date 2015-09-01 2015-09-02 2015-09-03
call_v call_d call_v call_d call_v call_d
bts_name
1002_NUc_Marathalli 8962 0.62 7033 0.63 6567 1.19
1003_IU2_Munnekolalu 4659 1.17 6671 0.46 NaN NaN
基本上,这是一个在聚合之后的堆叠和出栈的问题。
https://stackoverflow.com/questions/33387773
复制相似问题