Python:计算几年中时间戳的天数

时间:2019-05-19 17:54:33

标签: python pandas datetime

这是我的dataframe。请注意,最后一行与前一行来自不同的年份。索引是日期时间。

DateTime    data
2016-04-01  14.01
2016-04-02  17.25
2016-04-03  16.99
2016-04-04  17.34
2018-04-05  17.07

我想计算时间戳中不重复的天数。
以下代码返回 735

daily = df.resample('D').sum()
print('Number of days in df:', len(daily.index))

我希望结果是 5 天。

2 个答案:

答案 0 :(得分:1)

DatetimeIndex.strftime%m-%d一起用于天蛾,并添加Index.nunique

n = df.index.strftime('%m-%d').nunique()
print('Number of days in df:', n)
#Number of days in df: 5

您的解决方案应更改:

daily = df.groupby(df.index.strftime('%m-%d')).sum()
print('Number of days in df:', len(daily.index))
#Number of days in df: 5

或按单独的月份和日期分组:

daily = df.groupby([df.index.month, df.index.day]).sum()
print('Number of days in df:', len(daily.index))
#Number of days in df: 5

但是如果需要唯一值的数量也要加上年份:

n = df.index.nunique()
print('Number of days in df:', n)
#Number of days in df: 5

答案 1 :(得分:1)

您实际上不需要resample,因为您没有对数据进行任何类型的操作。您可以简单地将索引转换为freq='D'(假设您需要转换...也就是说,您的索引可能还包含时间戳),然后计算唯一值的数量:

c.asfreq('D').index.nunique()