Найдите во всем втором кадре данных столбец A строк в первом кадре данных и заполните столбец B значением столбца A во вPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Найдите во всем втором кадре данных столбец A строк в первом кадре данных и заполните столбец B значением столбца A во в

Сообщение Anonymous »

Я вижу много похожих вопросов, но не совсем моя ситуация.
У меня есть два фрейма данных, каждый из которых содержит много-много столбцов. Очень упрощенное воспроизведение:
df1:

Код: Выделить всё

   serial_num    name
0  39jr93j      Phyl
1           Gil
2  21pr12n      Ann
df2:

Код: Выделить всё

   serial_num    name    alternate_nombre  different_name   nm_alternate
0  5c2v40l      Jill       Jyl.            Jill Smith.       Gil Smyth
1  21pr12n      Karen      Caren.          Karen Ann.        Caryn Anne
2  39jr93j      Phyllis    Fillus          Phil              Phyllus
Желаемый результат:

Код: Выделить всё

   serial_num    name
0  39jr93j      Phyl
1  5c2v40l      Gil
2  21pr12n      Ann
В DF1 отсутствуют некоторые серийные номера, но единственный столбец имени в df1 может отличаться от написания, используемого в df2. Я хочу найти все строки, в которых отсутствует df1['serial_num'] в df2, чтобы заполнить их. Но в df2 существует значительное количество столбцов альтернативных имен, таких как что невозможно указать, в каких столбцах нужно искать. И имя в df1 может быть подстрокой имени/альтернативного имени в df2. Поэтому я хочу просмотреть весь df2 так, как если бы df1['name'] был подстрокой.
Затем я хочу заполнить соответствующий df1 ['serial_num'] с помощью df2['serial_num'].
Я не могу понять, как это сделать без перебора строк .
Я создал подмножество строк, в которых отсутствует df['serial_num'], со следующим:

Код: Выделить всё

missing_serials = df1[df1['serial_num'].isnull()]
Я вижу некоторые решения для поиска во всем кадре данных такой подстроки:

Код: Выделить всё

df2[df2.apply(lambda r: r.str.contains('specific static substring', case=False).any(), axis=1)]
Но я не могу понять, как заменить «конкретную статическую подстроку» на мой Missing_serials['name'] без перебор строк или как объединить недостающие_серии и df2, когда я не могу предсказать, какой столбец будет совпадать. Я начинаю задаваться вопросом, является ли использование подфрейма данных Missing_serials правильным способом, потому что я не знаю, как мне вернуть значения в df1. Может быть, есть какой-то подход df1['serial_num'].fillna, который лучше?

Подробнее здесь: https://stackoverflow.com/questions/787 ... ame-and-fi
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»