我有一个如下所示的数据框:
Values State Sort
3 a Open 42
4 b Close 42
5 d Open 42
6 c Open 42
7 b Open 42
8 a Open 45
9 d Open 45
10 a Open 45
11 c Open 45
12 c Open 45
13 d Open 45
14 d Open 46
15 b Open 46
16 b Open 46
17 c Open 46
18 a Open 46
如何汇总数据,以便计算“值”列中的值,并按照“排序”列中的值排列数据,如下所示:
Values State 42 45 46
a Open 1 2 1
b Close 1 0 0
b Open 1 0 2
c Open 1 2 1
d Open 1 2 1
我为同一个
编写了以下代码tables_df = pd.DataFrame(alerts_df.groupby(['Values','State','Sort']).size().rename('Count'))
tables_df = pd.pivot_table(alerts_df, index=['Values','State'], columns=['Sort'], values=['Count'], aggfunc=np.sum)
tables_df=tables_df.reset_index()
但它正在返回一个空的数据帧。
我做错了什么?还有一种方法可以在不使用pandas中的数据透视表的情况下执行此操作吗?
答案 0 :(得分:1)
我认为你需要:
alerts_df = (alerts_df.groupby(['Values','State','Sort'])
.size()
.unstack(fill_value=0)
.reset_index()
.rename_axis(None, 1))
print (alerts_df)
Values State 42 45 46
0 a Open 1 2 1
1 b Close 1 0 0
2 b Open 1 0 2
3 c Open 1 2 1
4 d Open 1 2 1