2 回答

TA貢獻1806條經驗 獲得超8個贊
StartDate如果給定的產品在,范圍內,您可以檢查每個月EndDate。
In [26]: pd.Series(
{dt: ((df.StartDate <= dt) & (df.EndDate >= dt)).sum()
for dt in pd.date_range(start='2011-01-01', freq='1MS', periods=6)})
Out[26]:
2011-01-01 1
2011-02-01 5
2011-03-01 5
2011-04-01 4
2011-05-01 4
2011-06-01 4
dtype: int64

TA貢獻1856條經驗 獲得超17個贊
這是另一種方法:
df.assign(dates = [pd.date_range(s,f, freq='MS') for s, f in zip(df['StartDate'], df['EndDate'])])\
.explode('dates').groupby('dates')['PR'].nunique()
輸出:
dates
2011-01-01 1
2011-02-01 5
2011-03-01 5
2011-04-01 4
2011-05-01 4
2011-06-01 4
2011-07-01 3
2011-08-01 3
2011-09-01 2
2011-10-01 2
2011-11-01 1
Name: PR, dtype: int64
- 2 回答
- 0 關注
- 163 瀏覽
添加回答
舉報