Nano Hash - криптовалюты, майнинг, программирование

удалить повторяющиеся пары из списка в столбце в pandas

Я хотел бы удалить повторяющиеся пары из списка в столбце при сохранении порядка:

например, ввод:

   cola.   colb
     1.  [sitea,siteb,sitea,siteb;sitec,sited,sitec,sited]

ожидаемый результат - это уникальные элементы перед каждым ';' символ

  cola.   colb
     1.  [sitea,siteb;sitec,sited]

Я попытался разделить столбец на основе ; символ и создать набор для списка, но это не сработало.

df['test'] = df.e2etrail.str.split(';').map(lambda x : ','.join(sorted(set(x),key=x.index)))

Я также пробовал следующее

df['test'] = df['e2etrail'].apply(lambda x: list(pd.unique(x)))

Любая идея о том, как заставить это работать

22.06.2020

  • содержимое в colb представляет собой список строк или только одну строку? если это список строк, можно ли предположить, что ; также является строкой и что запятая является единственным разделителем? 22.06.2020

Ответы:


1

Вы можете удалить [] полосой, а затем сначала разделить на , или ;, а затем использовать свое решение:

print (df.e2etrail.str.strip('[]').str.split('[;,]'))
dtype: object
0    [sitea, siteb, sitea, siteb, sitec, sited, sit...
Name: e2etrail, dtype: object

f = lambda x : ','.join(sorted(set(x),key=x.index))
df['test'] = df.e2etrail.str.strip('[]').str.split('[;,]').map(f)
print (df)
   cola.                                           e2etrail  \
0    1.0  [sitea,siteb,sitea,siteb;sitec,sited,sitec,sited]   

                      test  
0  sitea,siteb,sitec,sited  

Если нужен список вывода:

f = lambda x : sorted(set(x),key=x.index)
df['test'] = df.e2etrail.str.strip('[]').str.split('[;,]').map(f)
print (df)
   cola.                                           e2etrail  \
0    1.0  [sitea,siteb,sitea,siteb;sitec,sited,sitec,sited]   

                           test  
0  [sitea, siteb, sitec, sited]  
22.06.2020
  • Что, если я хочу сохранить разделитель (;) между каждыми двумя парами, чтобы ожидаемый результат был примерно таким: [sitea,siteb;sitec,sited] 22.06.2020
  • @Fighter Итак, вам нужен список вроде [sitea, siteb, sitec, sited]? Тогда невозможен разделитель ;. Или нужны строки типа sitea,siteb;sitec,sited? 23.06.2020
  • если разделитель нельзя добавить, если они не являются строками, я бы согласился. Я предложил ответ, но не думаю, что это лучший подход к решению этой проблемы. 23.06.2020

  • 2

    в конце концов я сделал это, преобразовав список в серию, удалил дубликаты и снова присоединился к серии следующим образом:

            df['e2etrails']=df['e2etrails'].str.split(';')
            df['e2etrails']=df['e2etrails'].apply(lambda row :';'.join(pd.Series(row).str.split(',').map(lambda x : ','.join(sorted(set(x),key=x.index)))))
    
    23.06.2020
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..