Python 如何按键划分两个数据帧

Python 如何按键划分两个数据帧,python,pandas,dataframe,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 换句话说,如果这些值的键匹配,则将

这里有一个问题。给定两个数据帧,例如:

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
换句话说,如果这些值的键匹配,则将它们分开。行的顺序无关紧要。

您可以使用:

现在,
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!
我认为您可以使用方法在分割期间按键匹配数据帧:

>>> res = A.set_index('key') / B.set_index('key')
>>> res
      val
key      
eggs   10
ham    10
spam   10
然后你就可以回来了


你想分裂吗?我不知道,因为10/2是5,不是10。“那个么你们是在做基本除法,还是在想别的什么?”RyanSaxe说,他根据键进行除法,所以结果是correct@RyanSaxe关键是行是排列的,所以我不想在同一个位置分割值,而是用相同的键分割值。@alko哇,我不太喜欢不仔细地阅读这些行。OP没有提供一个测试用例,我的设置有一个错误,收到错误的结果决定了这个方法不起作用。这是非常聪明的。这和合并之间有显著区别吗?就内存耗尽而言,因为这不会创建新的
数据帧
。在这种情况下,@alko merging确实有效,我测试了它,没有问题。@RyanSaxe我删除了我的答案,因为尽管它有效,这样你就不必弄乱列名了
>>> res = A.set_index('key') / B.set_index('key')
>>> res
      val
key      
eggs   10
ham    10
spam   10
>>> res.reset_index()
    key  val
0  eggs   10
1   ham   10
2  spam   10