3 回答

TA貢獻1891條經(jīng)驗 獲得超3個贊
這是因為您將 a 和 b 拉出為DataFrame不是系列,
a
Out[312]:
presence x y vx vy lane
2 0 46 8 9 0.2 2
b
Out[313]:
presence x y vx vy lane
1 1 35 4 5 0.5 1
上面的數(shù)據(jù)幀index是不同的,當我們進行計算時pandas會檢查index第一個,如果索引不匹配那么輸出將是NaN
快速解決 :
diff_x = b[['x','y']].values - a[['x','y']].values
diff_x
Out[311]: array([[-11, -4]], dtype=int64)

TA貢獻1797條經(jīng)驗 獲得超4個贊
pandas是面向索引的,轉(zhuǎn)換為數(shù)組然后比較:
a = df.iloc[[2]]
b = df.iloc[[1]]
diff_x = a[['x','y']].to_numpy() - b[['x','y']].to_numpy()
#array([[11, 4]], dtype=int64)
或者,對于 2 個連續(xù)行,您可以使用diff:
df[['x','y']].diff().iloc[2]
x 11.0
y 4.0
Name: 2, dtype: float64

TA貢獻1872條經(jīng)驗 獲得超4個贊
您可以使用.loc
樣式索引來獲取pandas.Series
特定行索引和列名稱。然后你可以減去這兩個系列。
如果您希望得到 11 和 4 作為輸出,則必須反轉(zhuǎn)帖子中的減法運算。
diff_x = df.loc[2, ["x", "y"]] - df.loc[1, ["x", "y"]]
# x? ? 11.0
# y? ? ?4.0
# dtype: float64
添加回答
舉報