У меня есть таблица T1, как показано ниже (хранится в виде фрейма данных df3 со столбцами col1, col2 и col3)
df2 имеет столбцы 'l', 'm', 'n' ...
df1 имеет столбцы 'a', 'b', 'c'
col1 col2 col3
x add {'a':'df1','l':'df2','n':'df2'}
y sub {'b':'df1','m':'df2'}
z sqrt {'c': 'df1'}
Значение x в столбце col1 рассчитывается с помощью операции add в столбце col2 с использованием параметров ключ: значение пары в столбце столбца 3 ( a in df1 , l in df2 , ...)
Аналогично значение y в столбце col1 следует вычислять с помощью операции sub в столбце col2 с использованием параметров в столбце col3 ( b в df1 , m in df2 ); количество пар k: v в Col3 может быть больше или меньше в зависимости от операции / функции, определенной в столбце 2, например, для sqrt только 1 пара
Я хочу получить вывод в виде фрейма данных df4, как упомянуто ниже
x y z
df1['a']+df2['l']+df2['n'] df1['b'] - df2['m'] df1['c]
Я пытаюсь добиться этого путем создания функции, как указано ниже, но я не уверен, как мне построить и передать Dynami c список аргументов этой функции, где количество передаваемых аргументов зависит от количества пар k: v , назначенных в col3? В моем случае для добавить у меня есть 3, а для sub у меня есть 2 и для sqrt , у меня есть только 1
</p>
<p>for ix,row in df3.iterrows():</p>
<code> call_operation = row['col2']
target_value = row['col1']
#df4[target_value] = getattr(module,call_operation)(df2[b],df1[a])
df4[target_value] = getattr(module,call_operation)( <dynamic argument list form col3> )
</code>