Python groupby日期但使用if语句

时间:2016-04-20 16:13:05

标签: python pandas

我的数据如下:

id   Open    Close
1    1/1/15   1/1/15 
2    1/1/15   2/1/15
3    3/1/15   4/1/15  

我需要创建一个数据框,显示任何一天打开案例的数量,因此上面数据的结果如下所示:

Date   #Open
1/1/15   1
2/1/15   0
3/1/15   1

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

此方法创建第一个案例打开与最后一个案例打开或关闭的最大值之间的所有日期的索引。然后迭代每个日期并过滤相关日期的数据帧,检查结果大小。

df['Open'] = pd.to_datetime(df.Open)
df['Close'] = pd.to_datetime(df.Close)

idx = pd.date_range(df.Open.min(), max(df.Open.max(), df.Close.max()))

cases = pd.DataFrame([len(df[(date >= df.Open) & (date < df.Close)]) 
                      for date in idx], 
                     index=idx, columns=['case_count'])

>>> cases.head(3)
            case_count
2015-01-01           1
2015-01-02           1
2015-01-03           1

>>> cases.tail(3)
            case_count
2015-03-30           1
2015-03-31           1
2015-04-01           0