如何计算熊猫数据框中的总天数

时间:2020-06-20 08:18:05

标签: python pandas dataframe

我有一个带有日期和小时/分钟的df列:

0   2019-09-13 06:00:00
1   2019-09-13 06:05:00
2   2019-09-13 06:10:00
3   2019-09-13 06:15:00
4   2019-09-13 06:20:00
Name: Date, dtype: datetime64[ns]

我需要计算数据框包含多少天。

我这样尝试过:

sample_length = len(df.groupby(df['Date'].dt.date).first())

sample_length = len(df.groupby(df['Date'].dt.date))

但是我得到的电话号码似乎不对。您知道另一种计算天数的方法吗?

4 个答案:

答案 0 :(得分:1)

考虑样本日期:

sample = pd.date_range('2019-09-12 06:00:00', periods=50, freq='4h')
df = pd.DataFrame({'date': sample})

                  date
0  2019-09-12 06:00:00
1  2019-09-12 10:00:00
2  2019-09-12 14:00:00
3  2019-09-12 18:00:00
4  2019-09-12 22:00:00
5  2019-09-13 02:00:00
6  2019-09-13 06:00:00
...
47 2019-09-20 02:00:00
48 2019-09-20 06:00:00
49 2019-09-20 10:00:00

使用DataFrame.groupbydf['date'].dt.date上的数据框进行分组,并使用aggregate函数GroupBy.size

count = df.groupby(df['date'].dt.date).size()

# print(count)
date
2019-09-12    5
2019-09-13    6
2019-09-14    6
2019-09-15    6
2019-09-16    6
2019-09-17    6
2019-09-18    6
2019-09-19    6
2019-09-20    3
dtype: int64

答案 1 :(得分:1)

我不确定您要在这里做什么。您是否要计算唯一的(星期一/星期二/ ...),每月的日期(1-31 ish),每年的日期(1-365),还是唯一的日期(从时间开始算起的唯一天数)?

从pandas系列中,您可以使用{series}.value_counts()来获取每个唯一值的条目数,或者简单地使用{series}.unique()来获取所有唯一值

import pandas as pd
df = pd.DataFrame(pd.DatetimeIndex(['2016-10-08 07:34:13', '2015-11-15 06:12:48',
               '2015-01-24 10:11:04', '2015-03-26 16:23:53',
               '2017-04-01 00:38:21', '2015-03-19 03:47:54',
               '2015-12-30 07:32:32', '2015-11-10 20:39:36',
               '2015-06-24 05:48:09', '2015-03-19 16:05:19'],
              dtype='datetime64[ns]', freq=None), columns = ["date"])

(星期一/星期二/...):

df.date.dt.dayofweek.value_counts()

每月日期(1-31 ish)

df.date.dt.day.value_counts()

每年的日期(1-365)

df.date.dt.dayofyear.value_counts()

唯一的日期(从时间开始算起的唯一天数)

df.date.dt.date.value_counts()

要从上述任何一项中获取唯一条目的数量,只需添加.shape[0]

答案 2 :(得分:0)

import pandas as pd
df = pd.DataFrame({'Date': ['2019-09-13 06:00:00',
                            '2019-09-13 06:05:00',
                            '2019-09-13 06:10:00',
                            '2019-09-13 06:15:00',
                            '2019-09-13 06:20:00']
                   },
                   dtype = 'datetime64[ns]'
                  )

df = df.set_index('Date')
_count_of_days = df.resample('D').first().shape[0]
print(_count_of_days)

答案 3 :(得分:0)

为了计算给定时间序列数据示例中唯一日期的总数,我们可以使用:

print(len(pd.to_datetime(df['Date']).dt.date.unique()))