Python 使用熊猫按天分组DatetimeIndex

Python 使用熊猫按天分组DatetimeIndex,python,pandas,datetime,pandas-groupby,Python,Pandas,Datetime,Pandas Groupby,我已将数据帧索引为DateTimeIndex,如下所示: timstamp _id 2018-05-09 16:56:40.940 somedata1 2018-05-09 16:54:03.959 somedata2 2018-05-10 16:53:42.975 somedata3 2018-05-11 16:52:44.897 somedata4 2018-05-11 16:46:35.902 somedata5 我想展示每个日期的频率,如下所示

我已将数据帧索引为DateTimeIndex,如下所示:

timstamp                 _id
2018-05-09 16:56:40.940  somedata1
2018-05-09 16:54:03.959  somedata2
2018-05-10 16:53:42.975  somedata3
2018-05-11 16:52:44.897  somedata4
2018-05-11 16:46:35.902  somedata5
我想展示每个日期的频率,如下所示:

day                      count
2018-05-09               2
2018-05-10               1
2018-05-11               2
提前谢谢

这是一种方法

# convert to datetime
df['timestamp'] = pd.to_datetime(df['timestamp'])

# normalize, count values, convert to dataframe
res = df['timestamp'].dt.normalize()\
                     .value_counts()\
                     .to_frame().reset_index()

# rename columns
res.columns = ['timestamp', 'count']
结果:

print(res)

   timestamp  count
0 2018-05-09      2
1 2018-05-11      2
2 2018-05-10      1
这是一种方式

# convert to datetime
df['timestamp'] = pd.to_datetime(df['timestamp'])

# normalize, count values, convert to dataframe
res = df['timestamp'].dt.normalize()\
                     .value_counts()\
                     .to_frame().reset_index()

# rename columns
res.columns = ['timestamp', 'count']
结果:

print(res)

   timestamp  count
0 2018-05-09      2
1 2018-05-11      2
2 2018-05-10      1
str.split
+
groupby
+
count

to_datetime
+
groupby
+
count
或者

str.split
+
groupby
+
count

to_datetime
+
groupby
+
count
或者


df.groupby(df.timestame.dt.date).size()
df.timestame.dt.date.value\u计数()
请澄清您所写的是“按日期”而不是“按天”(星期一、星期二或0..6)。
df.groupby(df.timestame.dt.date.size()
df.timestame.dt.date.value\u计数()
请澄清您所说的“按日期”而不是“按天”(星期一、星期二或0..6)的意思。cᴏʟᴅsᴘᴇᴇᴅ 如果问题的意思是“按天”(星期一、星期二或0..6)而不是“按日期”,请编辑该问题。它目前看起来就像是pandas groupby datetime上许多其他版本的复制品。@smci不。。。这是一个真正的骗局,我很不高兴承认我这么快就回答了,而不是试图关闭:(呃,但你现在可以像骗局一样关闭…这就是我后来发现它是骗局时所做的…[datetimeindex].dt.floor('D')在pandas 1.0中不再有效。你应该更喜欢[datetimeindex].dayofyearcᴏʟᴅsᴘᴇᴇᴅ 如果问题的意思是“按天”(星期一、星期二或0..6)而不是“按日期”,请编辑该问题。它目前看起来就像是pandas groupby datetime上许多其他问题的复制品。@smci不……这是一个真正的复制品,我很不高兴承认我如此轻松地回答了问题,而不是试图结束:(呃,但您现在可以作为dupe关闭…这就是我后来发现它是dupe时所做的…[datetimeindex].dt.floor('D')在pandas 1.0中不再有效。您应该更喜欢[datetimeindex].dayofyear
df['timstamp'] = pd.to_datetime(df['timstamp']).dt.floor('D')
df.groupby('timstamp', as_index=False)._id.count()
    timstamp  _id
0 2018-05-09    2
1 2018-05-10    1
2 2018-05-11    2