【发布时间】:2021-06-13 18:43:57
【问题描述】:
我正在使用 groupby,但我不想丢失未包含在 groupby 中的其他列,例如我有一个 df:
id date name item price unit store
1 1/1/2020 abc apples 200 Fruits BigB
1 1/2/2020 abc apples 100 Fruits BigB
1 1/3/2020 abc apples 250 Fruits BigB
1 1/1/2020 abc mangoes 350 Fruits BigB
1 1/2/2020 abc mangoes 150 Fruits BigB
1 1/3/2020 abc mangoes 50 Fruits BigB
2 1/1/2020 xyz apples 50 Fruits BigB
2 1/2/2020 xyz apples 50 Fruits BigB
我想创建两列 flag 并基于 id 和 name 开始,如果 price 的值大于其前一行,则 flag 为 1 否则为 0。数据必须基于 id、name 和items.start 列基于标志。最初起始值将是其第一行的价格值。如果标志为 0,则开始具有先前的值,当标志更改为 1 时,开始也更改为其相应的价格值 输出将是:
id date name item price unit store Flag start
1 1/1/2020 abc apples 200 Fruits BigB 0 200
1 1/2/2020 abc apples 100 Fruits BigB 0 200
1 1/3/2020 abc apples 250 Fruits BigB 1 250
1 1/1/2020 abc mangoes 350 Fruits BigB 0 350
1 1/2/2020 abc mangoes 150 Fruits BigB 0 350
1 1/3/2020 abc mangoes 50 Fruits BigB 0 350
2 1/1/2020 xyz apples 50 Fruits BigB 0 50
2 1/2/2020 xyz apples 50 Fruits BigB 0 50
Groupby 是按 id、name 和 item 列完成的。提前致谢。df 是按 id、name、item 和日期排序的。
【问题讨论】:
-
第二个表没有grouped_by。比如你有三行 (id, name, item) = (1, abc, apples)
-
其实我不想做实际的 groupby 我想在这三列的基础上添加一个 Flagh 列
标签: python pandas dataframe pandas-groupby