我的数据框如下所示:
fruits = pd.DataFrame({'orange': [10, 20], 'apple': [30, 40], 'banana': [50, 60]})
apple banana orange
0 30 50 10
1 40 60 20
我有这个载体(它也是一个数据帧)
sold = pd.DataFrame({'orange': [1], 'apple': [2], 'banana': [3]})
apple banana orange
0 2 3 1
我想将此向量减去初始数据帧的每一行,以获得看起来像这样的数据框
apple banana orange
0 28.0 47.0 9.0
1 38.0 57.0 19.0
我试过了:
print fruits.subtract(sold, axis = 0)
输出
apple banana orange
0 28.0 47.0 9.0
1 NaN NaN NaN
它仅适用于第一行。我可以创建一个填充每行向量的数据框。有没有更有效的方法来减去这个向量?我不想使用循环。
答案 0 :(得分:4)
使用squeeze
将df转换为系列并传递axis=1
:
In [6]:
fruits.sub(sold.squeeze(), axis=1)
Out[6]:
apple banana orange
0 28 47 9
1 38 57 19
转换是必要的,因为dfs之间的设计算术运算将在索引和列上对齐,通过传递一个Series,这允许您从df中的每一行中减去另一个df中的行。
答案 1 :(得分:2)