将一个熊猫数据框的多个行和列分配给另一个

时间:2018-08-27 18:45:28

标签: pandas

什么是规范的方法?对我来说,最明显的语法不起作用。就像熊猫在尝试将整个数据框包含到每个相关元素中一样。

foo = pd.DataFrame(np.zeros((5,2), dtype=int), columns=['a','b'])
foo2 = foo.copy()
bar = pd.DataFrame([[1,2], [3,4]], index=[1,3], columns=['c','d'])

foo.loc[bar.index,['a','b']] = bar.loc[:,['c','d']] 
# same result for foo.loc[bar.index, :] = bar   
print(foo)

产生:

     a    b
0  0.0  0.0
1  NaN  NaN
2  0.0  0.0
3  NaN  NaN
4  0.0  0.0

但是,您可以一次分配一个系列,这需要循环。

for (foo_col, bar_col) in zip(foo2.columns, bar.columns):
    foo2.loc[bar.index, foo_col] = bar[bar_col]

print(foo2)  

产生:

   a  b
0  0  0
1  1  2
2  0  0
3  3  4
4  0  0

1 个答案:

答案 0 :(得分:3)

使用update

foo = pd.DataFrame(np.zeros((5,2), dtype=int), columns=['a','b'])
bar = pd.DataFrame([[1,2], [3,4]], index=[1,3], columns=['c','d'])

foo.update(bar.rename(columns=dict(zip(bar.columns,foo.columns))))
foo
Out[51]: 
     a    b
0  0.0  0.0
1  1.0  2.0
2  0.0  0.0
3  3.0  4.0
4  0.0  0.0