[英]Row by row multiplication on pandas or numpy
我有一个 dataframe,带有类和两个组件,第二个带有元素和相同的组件。
df1:
df1 = pd.DataFrame({'Class':['banana', 'apple'], 'comp1':[1, 2], 'comp2':[-5, 4]})
df2:
df2 = pd.DataFrame({'Element':['K', 'Mg'], 'comp1':[3, -4], 'comp2':[1, 3]})
我想以生成以下 output 的方式逐行相乘:
output = pd.DataFrame({'Class': ['banana', 'banana', 'apple', 'apple'], 'Element': ['K', 'Mg', 'K', 'Mg'], 'comp1':[3, -4, 6, -8], 'comp2':[-5, -15, 4, 12]})
你可以帮帮我吗?
正如我所见,它就像笛卡尔积。 然后如前所述对所需的 output 进行一些操作。
import pandas as pd
df1 = pd.DataFrame({'Class':['banana', 'apple'], 'comp1':[1, 2], 'comp2':[-5, 4]})
df2 = pd.DataFrame({'Element':['K', 'Mg'], 'comp1':[3, -4], 'comp2':[1, 3]})
#merging data
output = df1.merge(df2, how='cross')
output['comp1'] = output.pop('comp1_x') * output.pop('comp1_y')
output['comp2'] = output.pop('comp2_x') * output.pop('comp2_y')
print(output)
expected = pd.DataFrame({'Class': ['banana', 'banana', 'apple', 'apple'], 'Element': ['K', 'Mg', 'K', 'Mg'], 'comp1':[3, -4, 6, -8], 'comp2':[-5, -15, 4, 12]})
print(expected.equals(output)) # True
'''
Class Element comp1 comp2
0 banana K 3 -5
1 banana Mg -4 -15
2 apple K 6 4
3 apple Mg -8 12
'''
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.