Сортировка данных и удаление дубликатов - PullRequest
0 голосов
/ 04 сентября 2018

У меня есть фрейм данных

df1

   ec  em  p_x  p_y
0 22  aa   44    45
1 22  aa   45    44
2 22  aa   47    nan
3 67  bb   56    92
4 67  bb   92    56
5 67  bb   92    40
6 67  bb   92    56
7 82  tt   23    12
8 82  tt   23    23
9 82  tt   12    23

Я ищу вывод как

   ec  em  p_x  p_y
0 22  aa   47    nan
1 67  bb   92   40
2 67  bb   92   56

Я хочу удалить дублированное значение на основе столбцов p_x и p_y для определенного столбца ec и em. Пожалуйста, дайте мне знать, как мне этого добиться.

Или даже если я могу перезаказать df1 как

   ec  em  p_x  p_y
0 22  aa   44    44
1 22  aa   45    45
2 22  aa   47    nan
3 67  bb   56    56
4 67  bb   92    92
5 67  bb   92    40
6 67  bb   92    56
7 82  tt   23    23
8 82  tt   23    23
9 82  tt   12    12

Я могу использовать df1 [~ df1 ['p_x'] == df1 ['p_y']] И добиться желаемого результата

1 Ответ

0 голосов
/ 04 сентября 2018

Ниже приведен код вашей проблемы:

import numpy as np

conditions = [
    (df['p_x'].isna() == False) & (df['p_y'].isna() == False),
    (df['p_x'].isna() == False) & (df['p_y'].isna() == True),
    (df['p_x'].isna() == True) & (df['p_y'].isna() == False)
]
choices = [df['p_x'] * df['p_y'], df['p_x'], df['p_y']]
df['flag'] = np.select(conditions, choices, default='black')
df = df.drop_duplicates(subset=["flag"], keep = False).drop(columns = ["flag"])

дайте мне знать, если это вам поможет

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