Учитывая pandas.DataFrame
:Удалить строки из pandas.Dataframe На основании записей
| Col_A | Col_B | Other_Columns
0 | A0 | B0 | …
1 | A1 | B1 | …
2 | A2 | B2 | …
3 | A3 | B3 | …
… | … | … | …
Я пытался сохранить часть этой DataFrame
: чтобы избавиться от строк, где оба A
и B
записей являются уникальными (например, если на 6-й строке сказать, оба значения A6
и B6
не появляются в другом месте на DataFrame
, мы хотим, чтобы удалить эту строку)
Я не хотел бы отказаться от дубликатов. Кроме того, я не хотел бы получать уникальные значения (которые, если я хорошо понимаю, были бы похожи на преобразование списка в набор, я прав?), А вместо этого значения, которые появляются только один раз.
На данный момент, это то, что я получил:
counts = df[['Col_A','Col_B']].stack().value_counts(ascending=True)
myList = [0] + [item for item in counts[counts.values == 1].index]
toRemove = []
for i in df.index:
if (df.at[i,'Col_A'] and df.at[i, 'Col_B']) in myList:
toRemove.append(i)
final_df = df[~df.index.isin(toRemove)]
Это не очень эффективно (кадр данных довольно большая> 10M линия) Там должна быть более вещими стратегии, включая встроенные функции панды, правильно? Кроме того, я не уверен, что первая строка верна: путем укладки обоих столбцов я уверен, что вы выполняете подсчет по элементам обоих столбцов?
Пожалуйста, не стесняйтесь, если вам нужна дополнительная информация или если мое письмо вам нечеткое.
Большое спасибо, что нашли время :-)
@unutbu, ИМО это не дубликат. OP хочет сохранить строки, где значения в столбце __either__ не уникальны. – MaxU
@MaxU: Моя ошибка; спасибо за повторное открытие. – unutbu