按条件求和枢轴值 python
Sum pivot value by condition python
我有一个 pandas 数据框,例如:
Id a b c d
x 1 1 1 01/01/2021
x 1 1 0 01/05/2021
y 1 1 1 02/01/2021
y 1 1 1 02/01/2021
Id a b c d
x 2 1 1 01/01/2021
y 1 1 1 02/01/2021
当且仅当 d 列中的日期不同时,我想对同一 ID 的 a b 列和 c 列的值求和。事实上,在这些情况下,两次出现的 x 具有不同的日期,因此我可以对这些值求和,而 d 具有相同的值,因此我只是不求和,而是第一次出现。
dat[~dat[["d", "Id"]].duplicated()].groupby("Id", as_index=False).agg(
{nm: "first" if nm in ["d", "Id"] else "sum" for nm in dat.columns}
)
Id a b c d
0 x 2 2 1 01/01/2021
1 y 1 1 1 02/01/2021
我有一个 pandas 数据框,例如:
Id a b c d
x 1 1 1 01/01/2021
x 1 1 0 01/05/2021
y 1 1 1 02/01/2021
y 1 1 1 02/01/2021
Id a b c d
x 2 1 1 01/01/2021
y 1 1 1 02/01/2021
当且仅当 d 列中的日期不同时,我想对同一 ID 的 a b 列和 c 列的值求和。事实上,在这些情况下,两次出现的 x 具有不同的日期,因此我可以对这些值求和,而 d 具有相同的值,因此我只是不求和,而是第一次出现。
dat[~dat[["d", "Id"]].duplicated()].groupby("Id", as_index=False).agg(
{nm: "first" if nm in ["d", "Id"] else "sum" for nm in dat.columns}
)
Id a b c d
0 x 2 2 1 01/01/2021
1 y 1 1 1 02/01/2021