У меня есть два кадра данных 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
Pandas сопоставляет два кадра данных на основе имени столбца, упомянутого в другом df, и частичного совпадения для получ ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Полярные поля объединяют два кадра данных, если значение столбца в другом столбце
Anonymous » » в форуме Python - 0 Ответы
- 15 Просмотры
-
Последнее сообщение Anonymous
-