Повторите выборку pandas dataframe и посчитайте количество экземпляров

Если у меня есть данные, такие как:

index = pd.date_range(start='2014 01 01 00:00', end='2014 01 05 00:00', freq='12H')
df = pd.DataFrame(pd.np.random.randn(9),index=index,columns=['A'])

df
Out[5]: 
                            A
2014-01-01 00:00:00  2.120577
2014-01-01 12:00:00  0.968724
2014-01-02 00:00:00  1.232688
2014-01-02 12:00:00  0.328104
2014-01-03 00:00:00 -0.836761
2014-01-03 12:00:00 -0.061087
2014-01-04 00:00:00 -1.239613
2014-01-04 12:00:00  0.513896
2014-01-05 00:00:00  0.089544

И я хочу пересчитать до ежедневной частоты, это довольно просто:

df.resample(rule='1D',how='mean')

Out[6]: 
                   A
2014-01-01  1.544650
2014-01-02  0.780396
2014-01-03 -0.448924
2014-01-04 -0.362858
2014-01-05  0.089544

Тем не менее, мне нужно отслеживать, сколько экземпляров происходит в каждый день. Есть ли хороший питонический способ использования повторной выборки для выполнения указанной операции "как" И отслеживания количества точек данных, входящих в каждое среднее значение, например, для получения

Out[6]: 
                       A    Instances
    2014-01-01  1.544650    2
    2014-01-02  0.780396    2
    2014-01-03 -0.448924    2
    2014-01-04 -0.362858    2
    2014-01-05  0.089544    2

1 ответ

Решение

Удобно, how принимает список:

df1 = df.resample(rule='1D', how=['mean', 'count'])

Это вернет DataFrame со столбцом MultiIndex: один уровень для "A" и другой уровень для "mean" и "count". Чтобы получить простой DataFrame, подобный нужному выводу в вашем вопросе, вы можете опустить дополнительный уровень, например df1.columns = df1.columns.droplevel(0) или, лучше, вы можете сделать повторную выборку на df['A'] вместо df,

Другие вопросы по тегам