MultiIndex Pivot Table 小计 Pandas
MultiIndex Pivot Table with Subtotals in Pandas
你好,
我有以下数据:
date item_type item_name gold_exit
2018-01-25 type1 item1 1
2018-01-25 type2 item2 2
2018-01-25 type3 item3 3
2018-01-25 type1 item4 4
2018-01-25 type2 item5 5
2018-01-26 type3 item6 6
2018-01-26 type1 item7 7
2018-01-26 type2 item8 8
2018-01-26 type3 item9 9
2018-01-26 type1 item10 10
2018-01-27 type2 item11 11
2018-01-27 type3 item12 12
2018-01-27 type1 item13 13
2018-01-27 type2 item14 14
2018-01-27 type3 item15 15
2018-01-28 type1 item16 16
2018-01-28 type2 item17 17
2018-01-28 type3 item18 18
2018-01-28 type1 item19 19
2018-01-28 type2 item20 20
2018-01-29 type3 item21 21
2018-01-29 type1 item22 22
2018-01-29 type2 item23 23
2018-01-29 type3 item24 24
2018-01-29 type1 item25 25
2018-01-30 type2 item26 26
2018-01-30 type3 item27 27
2018-01-30 type1 item28 28
2018-01-30 type2 item29 29
2018-01-30 type3 item30 30
我已经成功地使用这个来旋转它:
import pandas as pd
import numpy as np
df = pd.read_csv(r"C:\Users\user\Desktop\sql_values.csv")
table = pd.pivot_table(df,index=["date","item_type","item_name"],
values=["gold_exit"],
aggfunc=[np.sum])
print(table)
这就是我得到的:
date item_type item_name Sum - gold_exit
2018-01-25 type1 item1 1
item4 4
type2 item2 2
item5 5
type3 item3 3
2018-01-26 type1 item10 10
item7 7
type2 item8 8
type3 item6 6
item9 9
2018-01-27 type1 item13 13
type2 item11 11
item14 14
type3 item12 12
item15 15
2018-01-28 type1 item16 16
item19 19
type2 item17 17
item20 20
type3 item18 18
2018-01-29 type1 item22 22
item25 25
type2 item23 23
type3 item21 21
item24 24
2018-01-30 type1 item28 28
type2 item26 26
item29 29
type3 item27 27
item30 30
我应该怎么做才能到达这里,通过添加小计?
date item_type item_name Sum - gold_exit
2018-01-25 type1
item1 1
item4 4
type1 Result 5
type2
item2 2
item5 5
type2 Result 7
type3
item3 3
type3 Result 3...
我首先查看了这个问题 - - 但这并不能满足我的需求。
有人可以帮忙吗?
谢谢
这将需要 pd.concat
和 sum
注意我将 para 传递给 level ,因为您想要索引日期和 item_type
的小计
s=pd.concat([table,table.sum(level=[0,1]).assign(iten_name='result').set_index('iten_name',append=True)]).sort_index(level=[0,1,2])
s
Out[709]:
sum
gold_exit
date item_type item_name
2018-01-25 type1 item1 1
item4 4
result 5
type2 item2 2
item5 5
result 7
type3 item3 3
result 3
2018-01-26 type1 item10 10
item7 7
result 17
type2 item8 8
result 8
type3 item6 6
item9 9
result 15
2018-01-27 type1 item13 13
result 13
type2 item11 11
item14 14
result 25
type3 item12 12
item15 15
result 27
2018-01-28 type1 item16 16
item19 19
result 35
type2 item17 17
item20 20
result 37
type3 item18 18
result 18
2018-01-29 type1 item22 22
item25 25
result 47
type2 item23 23
result 23
type3 item21 21
item24 24
result 45
2018-01-30 type1 item28 28
result 28
type2 item26 26
item29 29
result 55
type3 item27 27
item30 30
result 57
你好,
我有以下数据:
date item_type item_name gold_exit
2018-01-25 type1 item1 1
2018-01-25 type2 item2 2
2018-01-25 type3 item3 3
2018-01-25 type1 item4 4
2018-01-25 type2 item5 5
2018-01-26 type3 item6 6
2018-01-26 type1 item7 7
2018-01-26 type2 item8 8
2018-01-26 type3 item9 9
2018-01-26 type1 item10 10
2018-01-27 type2 item11 11
2018-01-27 type3 item12 12
2018-01-27 type1 item13 13
2018-01-27 type2 item14 14
2018-01-27 type3 item15 15
2018-01-28 type1 item16 16
2018-01-28 type2 item17 17
2018-01-28 type3 item18 18
2018-01-28 type1 item19 19
2018-01-28 type2 item20 20
2018-01-29 type3 item21 21
2018-01-29 type1 item22 22
2018-01-29 type2 item23 23
2018-01-29 type3 item24 24
2018-01-29 type1 item25 25
2018-01-30 type2 item26 26
2018-01-30 type3 item27 27
2018-01-30 type1 item28 28
2018-01-30 type2 item29 29
2018-01-30 type3 item30 30
我已经成功地使用这个来旋转它:
import pandas as pd
import numpy as np
df = pd.read_csv(r"C:\Users\user\Desktop\sql_values.csv")
table = pd.pivot_table(df,index=["date","item_type","item_name"],
values=["gold_exit"],
aggfunc=[np.sum])
print(table)
这就是我得到的:
date item_type item_name Sum - gold_exit
2018-01-25 type1 item1 1
item4 4
type2 item2 2
item5 5
type3 item3 3
2018-01-26 type1 item10 10
item7 7
type2 item8 8
type3 item6 6
item9 9
2018-01-27 type1 item13 13
type2 item11 11
item14 14
type3 item12 12
item15 15
2018-01-28 type1 item16 16
item19 19
type2 item17 17
item20 20
type3 item18 18
2018-01-29 type1 item22 22
item25 25
type2 item23 23
type3 item21 21
item24 24
2018-01-30 type1 item28 28
type2 item26 26
item29 29
type3 item27 27
item30 30
我应该怎么做才能到达这里,通过添加小计?
date item_type item_name Sum - gold_exit
2018-01-25 type1
item1 1
item4 4
type1 Result 5
type2
item2 2
item5 5
type2 Result 7
type3
item3 3
type3 Result 3...
我首先查看了这个问题 -
有人可以帮忙吗? 谢谢
这将需要 pd.concat
和 sum
注意我将 para 传递给 level ,因为您想要索引日期和 item_type
s=pd.concat([table,table.sum(level=[0,1]).assign(iten_name='result').set_index('iten_name',append=True)]).sort_index(level=[0,1,2])
s
Out[709]:
sum
gold_exit
date item_type item_name
2018-01-25 type1 item1 1
item4 4
result 5
type2 item2 2
item5 5
result 7
type3 item3 3
result 3
2018-01-26 type1 item10 10
item7 7
result 17
type2 item8 8
result 8
type3 item6 6
item9 9
result 15
2018-01-27 type1 item13 13
result 13
type2 item11 11
item14 14
result 25
type3 item12 12
item15 15
result 27
2018-01-28 type1 item16 16
item19 19
result 35
type2 item17 17
item20 20
result 37
type3 item18 18
result 18
2018-01-29 type1 item22 22
item25 25
result 47
type2 item23 23
result 23
type3 item21 21
item24 24
result 45
2018-01-30 type1 item28 28
result 28
type2 item26 26
item29 29
result 55
type3 item27 27
item30 30
result 57