给定每天多个时间戳索引,如何获得仅包含一天最后一个时间戳的列表?所以如果我有这样的话:
import pandas as pd
all = [pd.Timestamp('2016-05-01 10:23:45'),
pd.Timestamp('2016-05-01 18:56:34'),
pd.Timestamp('2016-05-01 23:56:37'),
pd.Timestamp('2016-05-02 03:54:24'),
pd.Timestamp('2016-05-02 14:32:45'),
pd.Timestamp('2016-05-02 15:38:55')]
我想得到:
# End of Day:
EoD = [pd.Timestamp('2016-05-01 23:56:37'),
pd.Timestamp('2016-05-02 15:38:55')]
提前谢谢!
答案 0 :(得分:3)
尝试pandas groupby
all = pd.Series(all)
all.groupby([all.dt.year, all.dt.month, all.dt.day]).max()
你得到了
2016 5 1 2016-05-01 23:56:37
2 2016-05-02 15:38:55
答案 1 :(得分:0)
我已经创建了一个示例数据框。
import pandas as pd
all = [pd.Timestamp('2016-05-01 10:23:45'),
pd.Timestamp('2016-05-01 18:56:34'),
pd.Timestamp('2016-05-01 23:56:37'),
pd.Timestamp('2016-05-02 03:54:24'),
pd.Timestamp('2016-05-02 14:32:45'),
pd.Timestamp('2016-05-02 15:38:55')]
df = pd.DataFrame({'values':0}, index = all)
假设您的数据框架结构为示例,最重要的是按索引排序,下面的代码可以帮助您。
for date in set(df.index.date):
print(df[df.index.date == date].iloc[-1,:])
此代码将为您的数据框中的每个唯一日期返回切片的最后一行,因此在排序后,它将返回您当天的最后一条记录。嘿,它是pythonic。 (至少我相信)