Pandas сопоставляет два кадра данных на основе имени столбца, упомянутого в другом df, и частичного совпадения для получPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Pandas сопоставляет два кадра данных на основе имени столбца, упомянутого в другом df, и частичного совпадения для получ

Сообщение Anonymous »

У меня есть два кадра данных df1 и df2, как показано ниже.
import pandas as pd

data1 = {'Column1': [1, 2, 3],
'Column2': ['Account', 'Biscut', 'Super'],
'Column3': ['Funny', 'Super', 'Nice']}

df1 = pd.DataFrame(data1)

data2 = {'ColumnName':['Column2','Column3'],
'ifExist':['Acc','Sup'],
'TarName':['Account_name','Super_name']}
df2 = pd.DataFrame(data2)

Я хочу добавить новый столбец TarName в df1, частично сопоставляя значение ifExists из df2 с именем столбца, которое упоминается в df2 с df1.
Мой ожидаемый результат:
Column1 column2 column3 TarName
1 Account Funny Account_Name
2 Biscut Super Super_name
3 Super Nice

Я попробовал приведенный ниже код. Этот код способен частично сопоставляться, но только с одним столбцом. При таком подходе мне нужно создать словари с таким количеством сопоставлений столбцов, которые у меня есть, и применить столько же.
Есть ли более динамичный подход?
df2_Column2_dict = df2[df2['ColumnName']=='Column2'].set_index(['ifExist'])['TarName'].to_dict()
pat = r'({})'.format('|'.join(df2_Column2_dict.keys()))
extracted = df1['Column2'].str.extract(pat, expand=False).dropna()
df1['TarName'] = extracted.apply(lambda x: df2_Column2_dict[x]).reindex(df2.index)

print(df1)


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

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

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

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

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

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

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