通过匹配在pandas中添加行

时间:2018-02-05 18:22:58

标签: pandas rows

我需要帮助,为特定匹配添加2行。 鉴于df:

ID Name1 Name2 Value 
1  xy      a     1
1  yz      b     2
1  zz      c     3
2  xy      a     4
2  yz      b     5
3  zz      c     6

结果:(Name1 = yz,Name2 = b)的值=(Name1 = yz,Name2 = b)的值+(Name1 = xy,Name2 = a)的值

ID Name1 Name2 Value 
1  xy      a     1
1  yz      b     3    (2+1)
1  zz      c     3
2  xy      a     4
2  yz      b     9    (5+4)
3  zz      c     6

我认为我们需要先按id分组然后再添加。我通常使用np.where来操作列,但在这种情况下不确定它如何适用于行。

非常感谢!

1 个答案:

答案 0 :(得分:1)

我建议您添加一个新列:

df["new_column"] = np.where(df["Name1"] == "yz", df["Value"] + df["Value"].shift(-1),0)

如果你想要df [“Value”]中的当前值,如果不满足条件,那么只需执行以下操作:

df["new_column"] = np.where(df["Name1"] == "yz", df["Value"] + df["Value"].shift(-1),df["Value"])