我有一个包含4行3列的数据框,并且第一个数据框(df1)中的所有值都是浮点数。我还具有第二个数据框(df2),该数据框具有包含8760个条目的列。我想将第一个数据帧第3列中的每个值乘以第二个数据帧中的所有8760个值。最后,我想用8760个值的结果序列替换第一个数据帧中的原始值(将每个值乘以第二个数据帧值)。因此,第一个数据帧每一行的第3列中的值是8760个值的结果数组。
data = {'col1':[1.0, 2.0, 1.0, 3.0], 'col2':[.01, .04, .8, 1.0], 'col3':[0.7, 0.1, 0.5, 0.9]}
np.random.seed(123)
df1 = pd.DataFrame(data)
df2 = pd.DataFrame(np.random.randint(0,10, size=(1,8760)))
所以在这里,我想将df1中的col3的每个值取而代之,方法是将该值乘以df2中的所有8760个值,并将结果数组替换掉。因此,如果将0.7乘以df2中的每个值,就会用8760个值的数组替换“ 0.7”。是否有捷径可寻?当我尝试时,我只是在df1中获得了第一个值或NAN,而不是数组。
答案 0 :(得分:0)
我们可以在此处使用numpy
广播:
df1['result'] = (df1['col3'].to_numpy()[:, None] * df2.to_numpy()[0]).tolist()
结果:
col1 col2 col3 result
0 1.0 0.01 0.7 [1.4, 1.4, 4.2, 0.7, 2.1, 6.3, 4.2, 0.7, 0.0, ...
1 2.0 0.04 0.1 [0.2, 0.2, 0.6, 0.1, 0.3, 0.9, 0.6, 0.1, 0.0, ...
2 1.0 0.80 0.5 [1.0, 1.0, 3.0, 0.5, 1.5, 4.5, 3.0, 0.5, 0.0, ...
3 3.0 1.00 0.9 [1.8, 1.8, 5.4, 0.9, 2.7, 8.1, 5.4, 0.9, 0.0, ...