计算Python pandas Dataframe列并按日期排序

时间:2017-02-08 21:17:21

标签: python pandas

我有一个看起来像的DataFrame;

                            ID        Tags       Priority 
Created At
2017-01-01 14:40:00        1234      some_tag     P1
2017-01-02 15:00:00        1345      more_tag     P4

我希望计算每周的所有不同优先级标签;

Week       Priority     Count
1            p1           1
             p4           1

我尝试过相当简单的事情:

print(df.groupby(df.index.date).count())

但这并不能满足我的需要。

有什么建议吗?

2 个答案:

答案 0 :(得分:1)

DateTimeIndex有一个名为weekofyear的属性,可以满足您的需求。此外,您不仅希望按周分组,还要分配优先级。幸运的是,groupby函数支持将多个属性分组:

import datetime
import pandas as pd

a = datetime.datetime.now()
b = datetime.datetime.now()
df = pd.DataFrame({'Created At': [a, b], 'ID': [1234, 1235], 'Priority': ['p1', 'p2']}).set_index('Created At')
print(df)

                              ID Priority
Created At                               
2017-02-08 22:25:51.862604  1234       p1
2017-02-08 22:25:57.095862  1235       p2

print(df.groupby([df.index.weekofyear, 'Priority']).count())

            ID
  Priority    
6 p1         1
  p2         1

答案 1 :(得分:0)

pd.TimeGrouper与freq W-Sat一起使用,以便将'Sunday''Monday'组合在一起。

df.groupby([pd.TimeGrouper('W-Mon'), 'Priority']).ID.count().to_frame() 

                     ID
Created At Priority    
2017-01-07 P1         1
           P4         1