【发布时间】:2020-06-08 18:32:12
【问题描述】:
我有一个如下所示的表 T1(存储为数据框 df3,列 col1、col2 和 col3)
df2 有列 'l'、'm'、'n'...
df1 有 'a'、'b'、'c' 列
col1 col2 col3
x 添加 {'a':'df1','l':'df2','n':'df2'}
y sub {'b':'df1','m':'df2'}
z sqrt {'c': 'df1'}
col1 中的值 x 将使用 col2 中的操作 add 使用 col3 中的参数 key:value 对(a 在 df1 中,l 在 df2 中,...)
同样,col1 中的值 y 将使用 col2 中的操作 sub 使用 col3 中的参数计算(b in df1 , m in df2); Col3 中 k:v 对的数量可能更多或更少,具体取决于 col 2 中定义的操作/功能,例如,对于 sqrt,只有 1 对
我想以如下所述的数据帧 df4 的形式获得输出
xyz df1['a']+df2['l']+df2['n'] df1['b'] - df2['m'] df1['c]我正在尝试通过构建如下所述的函数来实现这一点,但我不确定如何构建动态参数列表并将其传递给该函数,其中要传递的参数数量取决于 k 的数量:在 col3 中分配了 v 对?对于 add 我有 3 个,对于 sub 我有 2 个,对于 sqrt 我只有 1 个
for ix,row in df3.iterrows():
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> )
【问题讨论】:
标签: python pandas function dataframe dynamic