Python 是否以指定的间隔重新采样?

Python 是否以指定的间隔重新采样?,python,datetime,pandas,Python,Datetime,Pandas,更新:我更新了我的示例,稍微澄清了我的问题 我有一个带有日期索引和值的数据框,如: date | value | ------------+-------| category A 2016-01-04 | 6 | 2016-01-05 | 4 | 2016-01-07 | 16 | 2016-01-10 | 0 |

更新:我更新了我的示例,稍微澄清了我的问题
我有一个带有日期索引和值的数据框,如:

            date    | value |        
         ------------+-------|
 category 
    A     2016-01-04 |     6 | 
          2016-01-05 |     4 | 
          2016-01-07 |    16 | 
          2016-01-10 |     0 | 
          2016-01-12 |     7 | 
    B     2016-01-20 |     0 | 
          2016-01-22 |     8 | 
          2016-01-29 |     5 | 
          2016-01-30 |     4 | 
我想对数据帧进行重采样,但要在每个类别的特定间隔(如“2016-01-01”到“2016-01-31”)之间,并用零填充所有Na值

这就是我想要的:

             date    | value |        
         ------------+-------|
 Category 
     A    2016-01-01 |     0 | 
          2016-01-02 |     0 | 
          2016-01-03 |     0 | 
          2016-01-04 |     6 | 
    .....
          2016-01-29 |     0 | 
          2016-01-30 |     0 | 
          2016-01-31 |     0 | 
     B    2016-01-01 |     0 | 
          2016-01-02 |     0 | 
          2016-01-03 |     0 | 
          2016-01-04 |     0 | 
    .....

          2016-01-29 |     5 | 
          2016-01-30 |     4 | 
          2016-01-31 |     0 | 
我可以这样做:(但是速度很慢。有更好的方法吗?) 将上表存储在名为data的数据框中

idx = pd.DatetimeIndex(start='2016-1-1', end='2016-1-31', freq='D')
df=pd.DataFrame(columns=['category','date','value'])
data.reset_index('category',inplace=True)
for a,b in data.groupby(['category']):
b.set_index('date',inplace=True)
b.reindex(idx,fill_value=0)
b.reset_index('date')
df=pd.concat([df,b])
这也会浪费大量内存。 我不想先创建日期索引,然后再添加值。
有没有一种方法可以使用重采样来转换上述内容。

解决方案是创建一个包含完整日期范围的数据框,其中包含0:

df2 = pd.DataFrame(0, index=pd.date_range('2016-01-01', '2016-01-31'), columns=['values'])
然后先使用
combine_
将原始值填入其中(如果可用):

df.combine_first(df2)
输出:

            values
2016-01-01       0
2016-01-02       0
2016-01-03       0
2016-01-04       6
2016-01-05       4
2016-01-06       0
2016-01-07      16

我相信您希望指定开始和结束日期,然后重新编制重采样数据的索引(0.17+)


嗨,谢谢你的帮助。但是,我正在尝试重新索引groupBy对象中的日期。我有几个类别,每个类别都有一个日期和一些值。我希望所有类别都有一个明确的间隔,如果日期的值丢失,则每个类别都要用0填充。
# Sample data.
df = pd.DataFrame({'a': range(5), 'b': range(5)}, index=pd.DatetimeIndex(start='2016-1-1', periods=5, freq='D'))

idx = pd.DatetimeIndex(start='2016-1-1', end='2016-2-29', freq='D')  # freq='B' for weekdays.
df.reindex(idx, fill_value=0).head(8)
            a  b
2016-01-01  0  0
2016-01-02  1  1
2016-01-03  2  2
2016-01-04  3  3
2016-01-05  4  4
2016-01-06  0  0
2016-01-07  0  0
2016-01-08  0  0