#python #pandas #time-series
#python #pandas #временные ряды
Вопрос:
В качестве вывода мне нужен фрейм данных только с 1 строкой (индекс должен быть последней датой) и максимальным значением по столбцу.
A B C
2000-06-13 35.44110000 34.17990000 34.02230000
2000-06-14 92.11310000 91.05430000 90.95720000
2000-06-15 57.97080000 57.78140000 58.19820000
2000-06-16 34.17050000 92.45300000 58.51070000
Я знаю, что могу использовать df.tails(n).max()
, но это превращает все это в серию, которая кажется довольно сложной для возврата в фрейм данных.
Кто-нибудь знает что-нибудь элегантное или функциональное для его достижения?
Комментарии:
1.
pd.DataFrame(df.tails(n).max())
? (Я не уверен, зачем вам нуженtails(n)
here, поскольку он выбирает последние n строк в dataframe , но вы предложили это)
Ответ №1:
Вы хотите idxmax
?
df.idxmax().to_frame().T
Вывод
A B C
0 2000-06-14 2000-06-16 2000-06-14
Или, согласно комментариям ниже.
df.max().to_frame().T
Вывод:
A B C
0 92.1131 92.453 90.9572
И,
df.max().to_frame().T.rename(index={0:df.idxmax().max()})
Вывод:
A B C
2000-06-16 92.1131 92.453 90.9572
Комментарии:
1. Нет, я хочу, чтобы максимальные значения столбцов были в одной строке со значением индекса последней даты
Ответ №2:
Ты можешь это сделать:
df = df[df['column'] == df['column'].max()]
В результирующем фрейме данных будет сохранен индекс, а также все значения столбцов…