Как drop_duplicate, используя разные условия для группы?

Эта ошибка в основном возникла, когда SQL-служба остановлена. Вам нужно перезапустить службу. Чтобы перейти в это окно, вам необходимо выполнить поиск таких сервисов, как this-

Затем Найдите SQLSERVER (MSSQLSERVER) и перезапустите службу.

Надеюсь, что это сработает.

0
задан Ahmad Suliman 28 March 2019 в 14:10
поделиться

1 ответ

Обновлено:

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

  1. Извлеките группы, в которых сортировка отличается:
df.groupby(['col0'], as_index=False)['col1'].max()
  1. Дублируйте df, как вы сделали
  2. Дублируйте только найденные группы в шаге 1 с правильной сортировкой. Вы можете получить эти группы, объединив с исходными df:
pd.merge(df, col1_max_groups)
  1. Обновите дедуплицированный DataFrame новыми значениями

Полный пример :

col1_max_groups = df.groupby(['col0'], as_index=False)['col1'].max()
deduped = df.sort_values(['col0', 'col1', 'abs(col1 - col2)', 'col2'], 
                         ascending=[True, True, True, False]) \
    .drop_duplicates(['col0', 'col1']) \
    .set_index(['col0', 'col1'])
update = pd.merge(df, col1_max_groups) \
    .sort_values(['col0', 'col1', 'abs(col1 - col2)', 'col2'], 
                 ascending=[True, True, False, False]) \
    .drop_duplicates(['col0', 'col1'])
deduped.update(update.set_index(['col0', 'col1']))
deduped.reset_index()

# returns
# col0  col1  col2  abs(col1 - col2)
#    A     1     2                 1
#    A     2     3                 1
#    A     3     4                 1
#    A     4     1                 3
#    B     2     3                 1
#    B     3     4                 1
#    B     4     5                 1
#    B     5     2                 3
0
ответ дан onepan 28 March 2019 в 14:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: