如何按键划分两个DataFrame

时间:2013-11-27 17:22:39

标签: python pandas dataframe

这是一个熊猫问题。给定两个数据帧,例如:

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

用词来说,如果它们的键匹配,则将值分开。行顺序无关紧要。

2 个答案:

答案 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