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

Итерация по столбцу для проверки значения

Я пытаюсь выполнить итерацию по столбцу CSV-файла и проверить для каждой итерации, можно ли найти значение в другом CSV-файле. Лучше было бы проверить, можно ли найти два значения двух столбцов в одной строке в другом файле csv.

Например:

CSV1 with column 1-10

а также

CSV2 with column 1-10

Теперь я ищу определенные строки, которые находятся в столбцах 1 и 2 CSV1, и смотрю, смогу ли я найти их в CSV2.

скажем, в CSV1 у нас есть это

      Column 1       Column2
row1: "Hello"        "you"
row2: "How are you"  "me"
row3: "xyz"          "youme"
row4: "xyz"          "meyou"
...
row10:"xyz"          "xyz"

и CSV2

      Column1        Column2
row1: "Hello"        "no"
row2: "How are you"  "me"
row3: "Hello"        "you"
row4: "xyz"          "yes"
...
row10:"xyz"          "xyz"

И я хочу перебрать строки CSV1, взять значения column1 и column2 из row1 и посмотреть, смогу ли я найти их в CSV2 (они могут быть в любом столбце в CSV2, но оба будут в одной строке)

Если, например, первая комбинация CSV1 column1 и column2 из row1 может быть найдена в любом row из CSV2, я хочу иметь True, чтобы указать мне, какая строка существует, а какая нет.

В моем примере я хочу взять Hello и вас из CSV1 row1 и хочу проверить, встречается ли эта комбинация где-либо в CSV2, но только если существуют и Hello, и you. В противном случае распечатайте false.

Таким образом, он выведет следующий результат для CSV2

row1: false
row2: false
row3: true
....

До сих пор я использовал isin, поэтому проверьте, существует ли значение, а затем сравните их вручную в Excel, что не очень полезно. Было бы лучше создать петлю вокруг него, но я не совсем уверен, как это сделать.

Надеюсь, вы сможете мне помочь.


  • ваши образцы данных не представляют того, что вы пытаетесь сделать - у них есть только один столбец. предоставить что-то репрезентативное. Вы также не определили свою логику сопоставления - вы хотите найти строки в CSV2, где совпадают col1 и col2 строка в CSV1 , где col1 или col2 совпадают? 05.08.2020

Ответы:


1

Есть более простые решения без повторения, если вы используете Numpy массивы и функциональные возможности.

Комментарии объясняют подход

col1 = ["hello","world","to start"]
col2 = ["technology", "python", "pandas", "fullstack"]

# generate some data sets that can have same values in col1 and col2
csv1 = pd.DataFrame(
    [[col1[random.randint(0, len(col1)-1)], col2[random.randint(0, len(col2)-1)]] 
     for i in range(5)], columns=["col1","col2"])
csv2 = pd.DataFrame(
    [[col1[random.randint(0, len(col1)-1)], col2[random.randint(0, len(col2)-1)]] 
     for i in range(20)], columns=["col1","col2"])

# get an array of the unique combinations of col1 and col2 in CSV1
myfind = np.array(csv1.groupby(["col1","col2"])
                  .agg({"col1":"first","col2":"first"}).reset_index(drop=True))

# use numpy isin to add a column to CSV2 if it's found in CSV1
csv2m = csv2.assign(
    # where CSV1 col1 + col2 == CSV2 col1+col2
    found=np.isin(csv2.loc[:,["col1","col2"]].sum(axis=1), myfind.sum(axis=1) ),
    # where CSV2 col1 in CSV1 col1 and CSV2 col2 in CSV1 col2
    partialfound=np.isin(csv2.loc[:,["col1","col2"]], myfind ).all(axis=1))

print(f"CSV1\n{csv1.to_string(index=False)}\n\nCSV2 with matches\n{csv2m.to_string(index=False)}")

вывод

CSV1
     col1        col2
 to start  technology
 to start  technology
    world      pandas
    hello  technology
 to start      pandas

CSV2 with matches
     col1        col2  found  partialfound
    world      python  False         False
 to start  technology   True          True
    hello      python  False         False
 to start      pandas   True          True
    world      python  False         False
    hello      pandas  False          True
    hello   fullstack  False         False
    world      pandas   True          True
 to start      python  False         False
    hello      python  False         False
 to start  technology   True          True
    world  technology  False          True
    world   fullstack  False         False
 to start      python  False         False
    hello   fullstack  False         False
    world      pandas   True          True
    world   fullstack  False         False
    hello   fullstack  False         False
    world   fullstack  False         False
    hello  technology   True          True
05.08.2020
Новые материалы

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

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

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

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

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

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

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