简体   繁体   English

比较python数据框中的日期范围

[英]Compare date range in python dataframe

I am having a daterange in pandas.core.indexes.datetimes.DatetimeIndexDatetimeIndex as :我在 pandas.core.indexes.datetimes.DatetimeIndexDatetimeIndex 中有一个日期范围:

(['2021-03-21', '2021-03-22', '2021-03-23', '2021-03-24',
               '2021-03-25', '2021-03-26', '2021-03-27', '2021-03-28',
               '2021-03-29', '2021-03-30', '2021-03-31', '2021-04-01',
               '2021-04-02', '2021-04-03', '2021-04-04'],
              dtype='datetime64[ns]', freq='D')

Moreover series data as:此外系列数据为:

2021-03-27    2
2021-03-28    1
2021-03-30    1
2021-03-31    2
2021-04-04    3

Now if I want to get a dataframe with all dates and its opposite value as it is and if any date is missing it should give answer as that date as 0 value.现在,如果我想获得一个包含所有日期及其相反值的数据框,并且如果缺少任何日期,它应该将该日期作为 0 值给出答案。 Output format should be:输出格式应为:

2021-03-22    0
2021-03-23    0
2021-03-24    0
2021-03-25    0
2021-03-26    0
2021-03-27    2
2021-03-28    1
...

IIUC use Series.reindex , only necessary DatetimeIndex in Series for matching idx : IIUC 使用Series.reindex ,只需要Series DatetimeIndex来匹配idx

idx = pd.DatetimeIndex(['2021-03-21', '2021-03-22', '2021-03-23', '2021-03-24',
                       '2021-03-25', '2021-03-26', '2021-03-27', '2021-03-28',
                       '2021-03-29', '2021-03-30', '2021-03-31', '2021-04-01',
                       '2021-04-02', '2021-04-03', '2021-04-04'])


print (s)
2021-03-27    2
2021-03-28    1
2021-03-30    1
2021-03-31    2
2021-04-04    3
Name: a, dtype: int64

s.index = pd.to_datetime(s.index)
s = s.reindex(idx, fill_value=0)
print (s)
2021-03-21    0
2021-03-22    0
2021-03-23    0
2021-03-24    0
2021-03-25    0
2021-03-26    0
2021-03-27    2
2021-03-28    1
2021-03-29    0
2021-03-30    1
2021-03-31    2
2021-04-01    0
2021-04-02    0
2021-04-03    0
2021-04-04    3
Name: a, dtype: int64

If want reindex by date_range instead idx use it:如果想通过date_range重新索引而不是idx使用它:

s = s.reindex(pd.date_range('2021-03-21', '2021-04-04', freq='D'), fill_value=0)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM