我有以下数据框:
Values
Date_Time
2016-01-04 12:00:00 778000
2016-01-04 18:00:00 35
2016-02-04 04:00:00 45
2016-02-04 11:00:00 47
2016-03-04 07:00:00 51
我想计算每天发生的次数:
Occurrences
Date_Time
2016-01-04 2
2016-02-04 2
2016-03-04 1
我正在尝试通过以下方式实现这一目标:
df2=df.groupby.index.count_values()
,但结果不是我希望的那样。我在做什么错了?
答案 0 :(得分:1)
您接近了,有2种可能的解决方案-将DatetimeIndex
转换为DatetimeIndex.date
到dates
-然后有必要转换为Series
或删除time
通过DatetimeIndex.floor
进行操作-再次获得DatetimeIndex
:
s = pd.Series(df.index.date).value_counts()
print (s)
2016-01-04 2
2016-02-04 2
2016-03-04 1
dtype: int64
print (s.index)
Index([2016-01-04, 2016-02-04, 2016-03-04], dtype='object')
print (type(s.index[0]))
<class 'datetime.date'>
s = df.index.floor('d').value_counts()
print (s)
2016-01-04 2
2016-02-04 2
2016-03-04 1
dtype: int64
print (s.index)
DatetimeIndex(['2016-02-04', '2016-01-04', '2016-03-04'], dtype='datetime64[ns]', freq=None)
最后可能用Series.to_frame
和rename_axis
创建一个具有设置的索引名称的列DataFrame
:
s = df.index.floor('d').value_counts().to_frame('Occurrences').rename_axis('Date_Time')
print (s)
Occurrences
Date_Time
2016-02-04 2
2016-01-04 2
2016-03-04 1