Pandas - 将分组和计数应用于多个列以生成/更改数据帧

时间:2016-09-29 16:26:39

标签: python pandas dataframe

对于那些对PD有更好了解的人,我确定我想要做的事情相当简单,但我只是坚持改造:

+---------+------------+-------+
| Trigger |    Date    | Value |
+---------+------------+-------+
|    1    | 01/01/2016 |   a   |
+---------+------------+-------+
|    2    | 01/01/2016 |   b   |
+---------+------------+-------+
|    3    | 01/01/2016 |   c   |
+---------+------------+-------+

...etc, into:

+------------+---------------------+---------+---------+---------+
|   Date     |  #of triggers       | count a | count b | count c |
+------------+---------------------+---------+---------+---------+
| 01/01/2016 | 3                   |    1    |    1    |     1   |
+------------+---------------------+---------+---------+---------+
| 02/01/2016 | 5                   |    2    |    1    |     2   |
+------------+---------------------+---------+---------+---------+

... and so on

问题是,我对如何实现这一点没有血腥的想法。 我已经搜索了SO,但我似乎无法找到任何适合我具体情况的内容。

我认为我必须按日期对所有内容进行分组,但是一旦完成,我需要做些什么才能获得剩余的列?

初始DF是从SQL Alchemy查询对象加载的,然后我想操纵它以获得上面描述的结果。如何做到这一点?

由于

2 个答案:

答案 0 :(得分:2)

$1 - $2

答案 1 :(得分:1)

您可以将GroupBy.sizeunstack一起使用,参数git ls-files -v . | grep ^S 也很有用:

sort=False
  

df1 = df.groupby(['Date','Value'])['Value'].size().unstack(fill_value=0) df1['Total'] = df1.sum(axis=1) cols = df1.columns[-1:].union(df1.columns[:-1]) df1 = df1[cols] print (df1) Value Total a b c Date 01/01/2016 3 1 1 1 size之间的差异是:
  size计算count个值,count则不计算。