将向量减去每行数据帧

时间:2018-01-15 22:34:34

标签: python python-3.x pandas

我试图从我的数据帧的每一行中减去一个向量。我在Windows上运行带有Anaconda的Python 3。

以下是我的数据框架:

数据框1(1行,5列):

    Col1  Col2  Col3  Col4  Col5
45  94.0    94  92.0    90    86

数据框2(17981行,5列):

   Col1  Col2  Col3  Col4  Col5
0  85.0    98  78.0    74    20
1  74.1    87  34.0    85    15 
..  ...   ...   ...   ...   ...

起初我尝试将一个向量减去另一个向量,但我发现自己有多个NAN,之后我尝试并按照this question进行了操作

df1 = df1.iloc[0,:]
df2.sub(df1)

但我仍然收到错误消息:

ValueError: can only convert an array of size 1 to a Python scalar

有人可以帮助我并指出我需要做什么吗?

另外请注意,两个数据帧的形状是:

df1 = (5,)
df2 = (17981,5)

2 个答案:

答案 0 :(得分:3)

In [134]: d2.sub(d1.iloc[0], axis=1)
Out[134]:
   Col1  Col2  Col3  Col4  Col5
0  -9.0   4.0 -14.0 -16.0 -66.0
1 -19.9  -7.0 -58.0  -5.0 -71.0

或:

In [135]: d2 - d1.iloc[0].values
Out[135]:
   Col1  Col2  Col3  Col4  Col5
0  -9.0   4.0 -14.0 -16.0 -66.0
1 -19.9  -7.0 -58.0  -5.0 -71.0

答案 1 :(得分:2)

这是你需要的吗?

df2.sub(df1.values.tolist()[0],axis = 1)
Out[484]: 
   Col1  Col2  Col3  Col4  Col5
0  -9.0   4.0 -14.0 -16.0 -66.0
1 -19.9  -7.0 -58.0  -5.0 -71.0