Pandas聚合数据并安排列

时间:2017-12-08 15:52:39

标签: python pandas

我有一个如下所示的数据框:

     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中的数据透视表的情况下执行此操作吗?

1 个答案:

答案 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