[英]Pandas Pivot_table formatting
如何使用单个 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
使用数据透视表
您可以使用 groupby 或 pivot_table 函数来聚合 call_volume 和 call_drop。
# 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
这是你想要的? 注意:为了便于打印,我将您的列重命名为“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
基本上就是聚合后的堆叠和拆垛问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.