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