Максимальная и минимальная дата в словаре данных - PullRequest
0 голосов
/ 29 мая 2018

Какой самый питонный способ найти максимальную и минимальную даты в словаре информационных фреймов, каждый из которых имеет индекс datetime?Например:

import pandas as pd
import datetime

df1 = pd.DataFrame(index =  [datetime.datetime(2016, 7, 2, 0, 0),
                    datetime.datetime(2016, 8, 6, 0, 0),
                    datetime.datetime(2016, 9, 13, 0, 0),
                    datetime.datetime(2016, 10, 26, 0, 0),
                    datetime.datetime(2016, 11, 2, 0, 0)],
                    data = {'bee' : [5, 3, 1, 0, 2],
                           'an' : [2,3,2,2,7]})

df2 = pd.DataFrame(index =  [datetime.datetime(2015, 7, 2, 0, 0),
                    datetime.datetime(2015, 8, 6, 0, 0),
                    datetime.datetime(2015, 9, 13, 0, 0),
                    datetime.datetime(2015, 10, 26, 0, 0),
                    datetime.datetime(2015, 11, 2, 0, 0)],
                    data = {'bee' : [15, 2, 5, 0, 2],
                           'an' : [1,1,2,7,7]})

df_dict = {'df1':df1, 'df2':df2}

df_dict['df1']

Выход:

index       an  bee
2016-07-02  2   5
2016-08-06  3   3
2016-09-13  2   1
2016-10-26  2   0
2016-11-02  7   2

И

df_dict['df2']

Выход

index       an  bee
2015-07-02  1   15
2015-08-06  1   2
2015-09-13  2   5
2015-10-26  7   0
2015-11-02  7   2

Итак, я хотел бы найтимаксимальная дата df_dict, которая должна быть 2016-11-02, и минимальная дата df_dict, которая является 2015-07-02.

Ответы [ 2 ]

0 голосов
/ 29 мая 2018

Используя pd.concat

pd.concat(df_dict).index.get_level_values(1).max()
Out[159]: Timestamp('2016-11-02 00:00:00')
pd.concat(df_dict).index.get_level_values(1).min()
Out[160]: Timestamp('2015-07-02 00:00:00')
0 голосов
/ 29 мая 2018

Получите max каждого max и min каждого min *

max(max(v.index) for k,v in df_dict.items())
min(min(v.index) for k,v in df_dict.items())

2016-11-02 00:00:00
2015-07-02 00:00:00

Добавление предложения @Wen, если вы не будете использоватьи k и v, вы можете сделать

max(max(v.index) for _,v in df_dict.items())

или даже

max(max(df_dict[k].index) for k in df_dict.keys())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...