Как создать условие if-else для получения максимальных значений в пандах? - PullRequest
0 голосов
/ 31 октября 2018

Я новичок в использовании python и хотел бы узнать, как сравнить значение в пандах.

в этом случае я пытаюсь сравнить значения в каждой строке с максимальными значениями, а затем исключить их.

например, у меня есть матрица как df

   x1  x2 x3   max
x1 1   3  3     3
x2 0.5 1  0.25  1
x3 6   7  8     8

Я попробовал свой код, как это, но он не работает, и получаю KeyError: 0

 for i in range(len(df)):
     for j in range(len(df)-1):
        if df[j].values.equal(df.max(axis=1)):
          print('max', jac_sim[j])

мой ожидаемый вывод - получить пару кадров данных в первой строке, например

Max (x1,x2), (x1,x3)

1 Ответ

0 голосов
/ 31 октября 2018

Я бы переписал код следующим образом (более читабельным):

# Create a sample dataframe
data = [(1  , 3,  3   ,  3), 
        (0.5, 1,  0.25,  1), 
        (6  , 7,  8   ,  8)]
df = pd.DataFrame(data, 
                  columns=['x1', 'x2', 'x3', 'max'],
                  index  =['x1', 'x2', 'x3'])
print(df)

# Your code could be rewriten like the following
col_names = df.columns.values
row_names = df.index
for row, cols in df.iterrows():
    max = cols['max']
    other_cols = cols.drop('max')
    print("Max", end =" ")
    for col in range(len(other_cols)):
        if other_cols[col] == max:
            print('(', row, ',', col_names[col], ')', end =" ")
    print()

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...