Возврат максимального значения даты и времени - PullRequest
0 голосов
/ 10 мая 2018

Это мой код

file = pd.read_excel(open("file name",'rb'),sheetname="data")
max_vol = file["Voltage"].max()
max_time = file.loc["Voltage"]==max_vol,"Timestamp"]

Моя метка времени содержит такие данные

0      2018-03-01 00:00:00
1      2018-03-01 00:05:00
2      2018-03-01 00:10:00
3      2018-03-01 00:15:00
4      2018-03-01 00:20:00
5      2018-03-01 00:25:00
6      2018-03-01 00:30:00
7      2018-03-01 00:35:00
8      2018-03-01 00:40:00
9      2018-03-01 00:45:00
10     2018-03-01 00:50:00
11     2018-03-01 00:55:00
12     2018-03-01 01:00:00
13     2018-03-01 01:05:00
14     2018-03-01 01:10:00
15     2018-03-01 01:15:00
16     2018-03-01 01:20:00

При печати max_time я получаю результат типа

624   2018-03-03 04:00:00

Name: Timestamp, dtype: datetime64[ns]

но я хочу только

2018-03-03 04:00:00

Может ли кто-нибудь помочь мне в этом отношении

1 Ответ

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

Вы можете использовать argmax для извлечения индекса самого большого элемента, а затем использовать pd.DataFrame.loc:

df['datetime'] = pd.to_datetime(df['datetime'])  # convert to datetime
res = df['datetime'].loc[df['voltage'].argmax()]

Если вы знаете, что ваш индекс - это целочисленный диапазон, начинающийся с 0, например, [0, 1, 2], то вы можете эквивалентно использовать более эффективные .iat или .iloc методы доступа.

pd.Series.argmax возвращает индекс первого появления максимума значений. pd.DataFrame.loc разрешает индексирование по метке индекса, поэтому, связывая их, мы достигаем желаемого результата.

...