我有三个Pandas数据框,其列如下:
df1 = pandas.DataFrame(data = {'A' : ["a", "b", "c", "d", "e"], 'B' : [[0.1, 0.2, 0.3, 0.4, 0.5],[0.1, 0.2, 0.3, 0.4, 0.5],[0.1, 0.2, 0.3, 0.4, 0.5],[0.1, 0.2, 0.3, 0.4, 0.5],[0.1, 0.2, 0.3, 0.4, 0.5]], 'C' : [10, 11, 12, 13, 14]})
df2 = pandas.DataFrame(data = {'A' : ["a", "b", "c"], 'B' : [[0.1, 0.2, 0.3, 0.4, 0.5],[0.1, 0.2, 0.3, 0.4, 0.5],[0.1, 0.2, 0.3, 0.4, 0.5]], 'C' : [30, 31, 32]})
df3 = pandas.DataFrame(data = {'A' : ["a", "b", "c", "d"], 'B' : [[0.1, 0.2, 0.3, 0.4, 0.5],[0.1, 0.2, 0.3, 0.4, 0.5],[0.1, 0.2, 0.3, 0.4, 0.5],[0.1, 0.2, 0.3, 0.4, 0.5]], 'C' : [50, 51, 52, 53]})
我有第四个数据帧,其中行数与我拥有的数据帧数相对应,所以这里我有3行,然后是3个数据帧。
dfZ = pandas.DataFrame(data = {'Z' : [1, 2, 3]})
我想做的是计算第四列,基本上是C列除以B列。 我希望从B列每一行的值列表中选择每行一个值,并且该值应用于所有数据帧(这意味着如果我为索引'a'选择0.5,则该值应用于所有索引为“ a”的数据框,但选择需要满足这些条件
df1.sum() == dfZ['Z'].iloc[0] # tolerence 10 to 20%
df2.sum() == dfZ['Z'].iloc[1] # tolerence 10 to 20%
df2.sum() == dfZ['Z'].iloc[2] # tolerence 10 to 20%
环顾四周似乎是一个优化问题,但是我不知道如何使用SciPy来解决它。