熊猫:按日期时间索引对值进行分组

时间:2018-08-21 14:01:46

标签: python pandas

我有以下数据框:

                     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(),但结果不是我希望的那样。我在做什么错了?

1 个答案:

答案 0 :(得分:1)

您接近了,有2种可能的解决方案-将DatetimeIndex转换为DatetimeIndex.datedates-然后有必要转换为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_framerename_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