Как установить столбцы данных в пандах с выводом idxmax? - PullRequest
3 голосов
/ 20 октября 2019

У меня есть pandas dataframe:

import numpy as np
import pandas as pd
df = pd.DataFrame(np.random.randint(0,40,size=(10,4)), columns=range(4), index = range(10))
df.head()

    0   1   2   3
0  27  10  13  21
1  25  12  23   8
2   2  24  24  34
3  10  11  11  10
4   0  15   0  27

Я использую функцию idxmax, чтобы получить столбцы, содержащие максимальное значение.

df_max = df.idxmax(1)
df_max.head()

0    0
1    0
2    3
3    1
4    3

Как я могу использоватьdf_max вместе с df, чтобы создать временной ряд значений, соответствующих максимальному значению в каждой строке df? Это вывод, который я хочу:

0    27
1    25
2    34
3    11
4    27
5    37
6    35
7    32
8    20
9    38

Я знаю, что могу добиться этого, используя df.max(1), но я хочу знать, как получить такой же вывод, используя df_max, так как я хочу бытьв состоянии применить df_max к другим матрицам (не df), которые имеют те же столбцы и индексы, что и df (но не те же значения).

1 Ответ

3 голосов
/ 20 октября 2019

Вы можете попробовать df.lookup

df.lookup(df_max.index, df_max)

Out[628]: array([27, 25, 34, 11, 27], dtype=int64)

Если вы хотите использовать Series / DataFrame, вы передаете вывод конструктору Series / DataFrame

pd.Series(df.lookup(df_max.index, df_max), index=df_max.index)

Out[630]:
0    27
1    25
2    34
3    11
4    27
dtype: int64
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...