Учитывая следующие панды df
-
Холдинг аккаунта | тип аккаунта | Колонка А | Колонка Б |
---|---|---|---|
Руперт 06 (23938996) | Холдинг аккаунта | 1825973 | 1702598 |
Руперт 07 (23938996) | Холдинг аккаунта | 1697870 | 1825973 |
- | - | - | - |
Кэролайн 06 (0131465) | Холдинг аккаунта | 11112222 | 5435450 |
Кэролайн 07 (0131465) | Холдинг аккаунта | 7896545 | 11112222 |
Я пытаюсь найти способ сделать следующее:
df
найдите экземпляры значений столбца B, появляющиеся в столбце ACaroline 07
== столбец A в Caroline 06
)Caroline 7
Значение столбца B изменится с 11112222
на 5435450
Это означает, что панды df
теперь будут выглядеть следующим образом:
Холдинг аккаунта | тип аккаунта | Колонка А | Колонка Б |
---|---|---|---|
Руперт 06 (23938996) | Холдинг аккаунта | 1825973 | 1702598 |
Руперт 07 (23938996) | Холдинг аккаунта | 1697870 | 1702598 |
- | - | - | - |
Кэролайн 06 (0131465) | Холдинг аккаунта | 11112222 | 5435450 |
Кэролайн 07 (0131465) | Холдинг аккаунта | 7896545 | 5435450 |
Есть ли у кого-нибудь предложения о том, как я могу добиться такого результата?
Полезная информация:
object
Пожалуйста, попробуйте это:
import numpy as np
df['Column B'] = np.where(df['Column B'].isin(df['Column A'].values),df['Column B'].shift(),df['Column B'])
пожалуйста, попробуйте это после опубликованного блока кода: df = df.drop_duplicates(subset=['Column B'],keep='last')
Мой набор данных состоит из 7000 строк (выше был отрывок), и этот блок кода, кажется, удаляет большинство строк, чего не должно быть. Любая идея, почему 2-й блок кода будет делать это? Я только пытаюсь удалить строки, значение столбца B которых было перенесено в другую строку, если это имеет смысл.
Это связано с тем, что ваш набор данных имеет много повторяющихся значений в столбце B. В этом случае я рекомендую вам предоставить здесь воспроизводимое подмножество фрейма данных, чтобы получить более точное решение.
Большое спасибо за это! Если я могу спросить, как бы я расширил этот код, чтобы вся строка, значение столбца B которой было перенесено, также была удалена? Чтобы использовать пример, который я привел в своем вопросе, - как удалить строки
Rupert 06 (23938996)
иCaroline 06 (0131465)
?