我试图从我的数据帧的每一行中减去一个向量。我在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)
答案 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