Как перебрать одну и ту же индексированную строку и номер столбца из двух отдельных кадров данных Pandas

У меня есть два отдельных кадра данных Pandas с одинаковыми размерами.

Df1

столбец1 столбец2 столбец3 1 "А" "Б" "С" 2 "А" "Б" "С" 3 "А" "Б" "С"

Дф2

столбец1 столбец2 столбец3 1 "Е" "А" "С" 2 "Е" "Ф" "Г" 3 "ЧАС" "Я" "Дж"

Как я могу перебрать всю строку 1 df1 и найти: «A». Если найдено «A», возьмите индекс строки и столбца и найдите в df2, что находится в этой ячейке. В данном случае это будет «Е».

Я пытался:

for row in df1:
   if row.columns contains "A":
       col_marker = column index
       search df2 @ col_marker for whats in that cell...

   else: 
       continue

Я ожидаю, что цикл for будет искать каждую строку df1, находить «A», затем брать это место и искать df2 в том же месте.

Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
Потяните за рычаг выброса энергососущих проектов
Потяните за рычаг выброса энергососущих проектов
На этой неделе моя команда отменила проект, над которым я работал. Неделя усилий пошла насмарку.
Инструменты для веб-скрапинга с открытым исходным кодом: Python Developer Toolkit
Инструменты для веб-скрапинга с открытым исходным кодом: Python Developer Toolkit
Веб-скрейпинг, как мы все знаем, это дисциплина, которая развивается с течением времени. Появляются все более сложные средства борьбы с ботами, а...
Библиотека для работы с мороженым
Библиотека для работы с мороженым
Лично я попрощался с операторами print() в python. Без шуток.
Эмиссия счетов-фактур с помощью Telegram - Python RPA (BotCity)
Эмиссия счетов-фактур с помощью Telegram - Python RPA (BotCity)
Привет, люди RPA, это снова я и я несу подарки! В очередном моем приключении о том, как создавать ботов для облегчения рутины. Вот, думаю, стоит...
Пошаговое руководство по созданию собственного Slackbot: От установки до развертывания
Пошаговое руководство по созданию собственного Slackbot: От установки до развертывания
Шаг 1: Создание приложения Slack Чтобы создать Slackbot, вам необходимо создать приложение Slack. Войдите в свою учетную запись Slack и перейдите на...
0
0
64
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Это можно сделать, как показано ниже:

df2[df1 == "A"]
Ответ принят как подходящий

Метод iterrows() используется для перебора строк df1. Для каждой строки индекс строки используется для доступа к той же строке в df2 с помощью метода loc.

# Loop through the rows of df1
for index, row in df1.iterrows():
    # Check if "A" is in the row
    if "A" in row.values:
        # Get the value in the same row and column in df2
        value = df2.loc[index, "column1"]
        print(value)
E
E
H

Вы также можете использовать df2[df1 == "A"], если предпочитаете следующий вывод.

индекс столбец1 столбец2 столбец3 0 Е NaN NaN 1 Е NaN NaN 2 ЧАС NaN NaN

Просто используйте маску:

out = df1.mask(df1.eq('A'), df2)

Выход:

  column1 column2 column3
1       E       B       C
2       E       B       C
3       H       B       C

Или для модификации на месте:

df1[df1.eq('A')] = df2

Изменено df1:

  column1 column2 column3
1       E       B       C
2       E       B       C
3       H       B       C

Если вы просто хотите узнать, что находится в df2, не присваивая:

df2[df1.eq('A')]

Выход:

  column1 column2 column3
1       E     NaN     NaN
2       E     NaN     NaN
3       H     NaN     NaN

Другие вопросы по теме