我有一个按时间索引的pandas数据帧。我想知道每天发生的观察(即数据帧行)总数。
这是我的数据框:

import pandas as pd

data = {'date': ['2014-05-01 18:47:05.069722', '2014-05-01 18:47:05.119994', '2014-05-02 18:47:05.178768', '2014-05-02 18:47:05.230071', '2014-05-02 18:47:05.230071', '2014-05-02 18:47:05.280592', '2014-05-03 18:47:05.332662', '2014-05-03 18:47:05.385109', '2014-05-04 18:47:05.436523', '2014-05-04 18:47:05.486877'],
        'value': [1, 1, 1, 1, 1, 1, 1, 1, 1, 1]}
df = pd.DataFrame(data, columns = ['date', 'value'])
print(df)

我想要的是这样一个数据帧(或序列):
   date             value
0  2014-05-01       2
1  2014-05-02       3
2  2014-05-03       2
3  2014-05-04       2

在回答了一堆堆溢出问题之后,我能得到的最接近的答案是:
df['date'].groupby(df.index.map(lambda t: t.day))

但那没有任何用处。

最佳答案

使用重采样。您需要日期列是datetime数据类型(因为它们是字符串),并且需要将其设置为使用重采样的索引。

In [13]: df['date'] = pd.to_datetime(df['date'])

In [14]: df.set_index('date').resample('D', 'count')
Out[14]:
            value
date
2014-05-01      2
2014-05-02      4
2014-05-03      2
2014-05-04      2

您可以使用任意函数或作为字符串提供的内置便利函数,包括“count”和“sum”等。

10-06 05:15