Python - удалить дубликаты в ячейке datafeame - PullRequest
0 голосов
/ 20 ноября 2018

У меня есть столбец в структуре datafrme:

df = pd.DataFrame({'Config': ['1A', '1A, 7A', '3C, 3C-7A', '1A, 3A, 1A-3A']})
print(df)

          Config
0             1A
1         1A, 7A
2      3C, 3C-7A
3  1A, 3A, 1A-3A

И если в ячейке есть XX-XX, удалите дублирующийся предыдущий элемент.
Например, в строках 2 и 3 будут удалены3C, 1A и 3A (или создайте новый столбец):

   Config
0      1A
1  1A, 7A
2   3C-7A
3   1A-3A

Большое спасибо.


Обновленный вопрос:

оригинальный датарам:

df = pd.DataFrame({'Config': ['1A', '1A, 7A', '3C, 3C-7A', '1A, 3A, 1A-3A', '5A, 3C-7A']})
df

          Config
0             1A
1         1A, 7A
2      3C, 3C-7A
3  1A, 3A, 1A-3A
4      5A, 3C-7A

цель:

      Config
0         1A
1     1A, 7A
2      3C-7A
3      1A-3A
4  5A, 3C-7A

Объяснение:

В строке 2 и строке 3:
3C дублируется до 3C-7A
1A и 3A повторяются до 1A-3A
, поэтому удалите 3C, 1A, 3A.

В строке 4: причина 5A не дублирует значения в 3C-7A, поэтому оба значения 5A и 3C-7A сохраняются.

1 Ответ

0 голосов
/ 20 ноября 2018

Если ваши данные следуют той же позиции, то это будет работать для вас,

df.loc[df['Config'].str.contains('-'),'Config']=df['Config'].str.split(',').str.get(-1)

Выход:

   Config
0      1A
1  1A, 7A
2   3C-7A
3   1A-3A

Пояснение:

Он разделит значения на , и примет его последнее значение, где в серии -.

EDIT-1

print df['Config'].str.split(', |-').apply(set)

Output:

0            {1A}
1        {1A, 7A}
2        {3C, 7A}
3        {1A, 3A}
4    {3C, 5A, 7A}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...