2014-04-01 97 views
0

在Python的大熊猫之一,可以说,我有两个DataFrames合并使用上一列的聚合两个DataFrames在DataFrames

A = pd.DataFrame({'key1': np.random.randint(4, size=10), 'val1': np.random.rand(10) }) 

B = pd.DataFrame({'key1': np.random.randint(4, size=10), 'val2': np.random.rand(10) }) 

我要添加一列到B这是值的平均值A中'val1'的组合(按键指A和B中的相同索引)。什么是最好的方法来做到这一点?

这里是我

A1 = A.groupby('key1')['val1'].mean().reset_index() 
B.merge(A1 , on='key1', how='left', sort=False, right_index=True) 

回答

0

你的意思是这样的什么工作?

A1 = A.groupby('key1').mean().reset_index() 
pd.merge(B, A1, on='key1') 
+0

是否第二线合并成A1 B,或是否需要说'B = pd.merge(B,A1,对= 'KEY1')' – user3487187

+0

@ user3487187不执行合并“IN-地方“,不。你必须分配它。 – chrisaycock

+0

谢谢。几个后续步骤:a)如果'val2'实际上在B中被称为'val1'会怎么样?有没有办法给val1的不同名称的意思? b)如果B中有一些不在A中的键怎么办......有没有办法为那些缺失的键分配mean(val1)= 0,以便不会丢失B中的条目 – user3487187