Получение индекса минимального значения списка в python - PullRequest
0 голосов
/ 11 января 2019

У меня есть DataFrames dfSide0 и dfSide1 с разным количеством строк, но одинаковыми столбцами:

  'distoperator' 'Name'         'camera_row'
0  67.3350       'End of Coil'  'a'
1  1331.4001     'Dent'         'b'
2  130.8350      'Oil'          'a'
3  859.2139      'Black Line'   'f'

То, что я хочу, это:

  1. Чтобы получить минимум, абсолютное значение всех возможных вычитаний между значениями dfSide0['distoperator'] и dfSide1['distoperator'], но только когда условие dfSide0['camera_row'] == dfSide1['camera_row'] имеет значение True.
  2. Чтобы получить значение dfSide1['Name'] для каждого из вышеуказанных значений.

Пока мой код:

temp_operator = []
temp_op_defect = []
k = -1
for i in dfSide0['distoperator']:
    k = k + 1
    j = dfSide0.index[k]
    c = min(abs(i - dfSide1['distoperator'][dfSide1['camera_row'] == dfSide0['camera_row'][j]]))
    h = dfSide1.index(min(abs(i - dfSide1['distoperator'][dfSide1['camera_row'] == dfSide0['camera_row'][j]])))
    s = dfSide1['Name'][h]
    temp_operator.append(c)
    temp_op_defect.append(s)

, которая выдает следующую ошибку:

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-37-e794dd1800c7> in <module>()
      6     j = dfSide0.index[k]
      7     c = min(abs(i - dfSide1['distoperator'][dfSide1['camera_row'] == dfSide0['camera_row'][j]]))
----> 8     h = dfSide1.index(min(abs(i - dfSide1['distoperator'][dfSide1['camera_row'] == dfSide0['camera_row'][j]])))
      9     s = dfSide1['Name'][h]
     10     temp_operator.append(c)

TypeError: 'Int64Index' object is not callable

Есть идеи? Заранее благодарю за ваш вклад.

1 Ответ

0 голосов
/ 14 января 2019

Я использовал метод idxmin () в списке, созданном для каждого i:

temp_operator = []
temp_op_defect = []
k = -1
for i in dfSide0['distoperator']:
    k = k + 1
    c = min(abs(i - dfSide1['distoperator'][dfSide1['camera_row'] == dfSide0['camera_row'][k]]))
    h = abs(i - dfSide1['distoperator'][dfSide1['camera_row'] == dfSide0['camera_row'][k]]).idxmin()
    f = dfSide1['Name'][h]
    temp_operator.append(c)
    temp_op_defect.append(f)

Кажется, работает!

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