python - 在pandas dataframe python中减去两行的一系列列

标签 python pandas

我有一个带有六个不同标签的数据框:presencexyvxvylane。我想区分一系列列上的两个行索引 [x, y, vx, vy ]。然而,减法给出了 NaN。感谢您的帮助。

import pandas as pd
data = {'presence': [1, 1, 0, 1],
        'x': [17, 35, 46, 57],
        'y': [4, 4, 8, 0],
        'vx': [2, 5, 9, 12],
        'vy': [0.3, 0.5, 0.2, 0], 
        'lane': [0, 1, 2, 0]}
df = pd.DataFrame(data)
a = df.iloc[[2]]
b = df.iloc[[1]]
diff_x = b[['x','y']] - a[['x','y']] # Gives two rows and two columns of nan
# Expected output: 11  4 

最佳答案

这是因为您将 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

上面的dataframe index是不同的,当我们进行计算时pandas会首先检查index,如果index不匹配那么输出将是NaN

快速修复:

diff_x = b[['x','y']].values - a[['x','y']].values
diff_x
Out[311]: array([[-11,  -4]], dtype=int64)

关于python - 在pandas dataframe python中减去两行的一系列列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63691280/

相关文章:

python - python中的网络数据包长度

python - 在 Python 中更新/附加到 .wav 文件

python - 从 URL 列表(每个 URL 包含一个唯一的表)中抓取表数据,以便将其全部附加到单个列表/数据帧中?

python - Pandas:根据列上的条件生成多个条形图

python - 根据另一列的名称重命名 Pandas Multiindex

python - Groupby Sum 忽略几列

python - 在循环中追加 Pandas DataFrame

python - 用于获取标量值的 df.at 和 df.loc 给出不同的结果

python - 按总和分组作为新列名

python - 获取 Pandas 数据框中满足特定条件的行(字符串)的百分比