选择Pandas指数中的最后一天

2024-09-30 19:30:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我得到了一个用日期时间索引索引的数据帧。 该指数包含几倍相同的日期,意味着同一年、同一月、同一天,时间可能不同。 我只想选择索引中每一天的最后一天。在

我想我走的路是对的,但我在逻辑上遗漏了一些东西。。。。在

所以dataframe dfmatches具有以下索引:

In[166]: dfmatches.index
Out[165]: 
<class 'pandas.tseries.index.DatetimeIndex'>
[2014-01-03 16:58:49, ..., 2014-11-26 11:22:59]
Length: 597, Freq: None, Timezone: None

其中的一个例子是:

^{pr2}$

我只希望每天的最后一个索引已经存在于索引中。因此,在提供的样本中:

2014-11-04 10:10:09    0.005169
2014-11-10 13:42:03    0.005169
2014-11-11 16:53:04    0.005169
2014-11-12 17:49:40    0.005169
2014-11-13 11:30:10    0.005169
2014-11-17 09:35:45    0.005169
2014-11-18 17:14:16    0.005169
2014-11-20 16:37:47    0.005169
2014-11-24 10:10:55    0.005169
2014-11-25 18:00:18    0.005169
2014-11-26 11:22:59    0.005169

我试着创造一个面具:

mask = (dfmatches.index.shift(1,'D').day > dfmatches.index.day)

然后做一个

dfmatches.loc[mask]

但这并没有回报我想要的,我还有重复的日子。。。在

我很确定失败在我实现的掩码逻辑中。。。。。在

也许不是,无论如何,我们都非常感谢您的提示!在


Tags: 数据innonedataframepandasindex时间mask
2条回答

如果您groupby索引日期,您可以为每个组选择最后一项,例如:

dfmatches.groupby(dfmatches.index.date).last()

我想你需要把你的约会时间分为日期和时间

所以这个2014-11-04 10:10:09将变成2014-11-04和10:10:09

如果你那样做,你可以做如下的事情

df.sort(['date','time']).groupby('date').apply(lambda x : x[-1:])

相关问题 更多 >