这是一个熊猫问题。给定两个数据帧,例如:
A =
key val
-----------
spam 10
eggs 20
ham 30
B =
key val
-----------
eggs 2
spam 1
ham 3
请注意,这些行是置换的。
如何划分A.val / B.val
,结果如下:
key val
-----------
spam 10
eggs 10
ham 10
用词来说,如果它们的键匹配,则将值分开。行顺序无关紧要。
答案 0 :(得分:4)
您可以使用pandas dataframe merging:
merged = pd.merge(A,B,on="key")
answer = merged['val_x']/merged['val_y']
现在answer
是一个包含您想要的值的系列,您可以创建一个新的数据框:
df = pd.DataFrame(zip(merged['key'],answer))
#print df
0 eggs 10
1 ham 10
2 spam 10
#left out header because I used 0 and 1, not key and value, but you get the point, it works!
答案 1 :(得分:3)
我认为您可以使用pandas.DataFrame.set_index()
方法在分割期间按键匹配数据框:
>>> res = A.set_index('key') / B.set_index('key')
>>> res
val
key
eggs 10
ham 10
spam 10
然后你可以pandas.DataFrame.reset_index()
回来
>>> res.reset_index()
key val
0 eggs 10
1 ham 10
2 spam 10