【发布时间】:2021-04-13 01:50:51
【问题描述】:
我的数据框 df 包含具有 EAN、较早和较晚日期、“是”和“否”标签和值的产品。
EAN-Unique Date Start Value
3324324 2019-04-30 no 0.11
3324324 2018-06-01 yes 56.03
asd2343 2015-03-23 yes 8.02
asd2343 2015-07-11 no 8.45
Xjkhfsd 1999-04-12 yes 12.33
Xjkhfsd 2001-02-01 no 9.11
5234XAR 2013-12-13 no 15.75
5234XAR 2000-12-13 yes 9.00
3434343 1972-05-23 yes 1.26
3434343 1980-11-01 no 2.77
我想根据 EAN-Uniques 的组(例如 3324324 是一个组,asd2343 是一个组等等)基于
- 基于较早日期的最低到最高值和
- 在每个组内从较早日期到较晚日期。
df 应如下所示:
EAN-Unique Date Start Value
3434343 1972-05-23 yes 1.26
3434343 1980-11-01 no 2.77
asd2343 2015-03-23 yes 8.02
asd2343 2015-07-11 no 8.45
5234XAR 2000-12-13 yes 9.00
5234XAR 2013-12-13 no 15.75
Xjkhfsd 1999-04-12 yes 12.33
Xjkhfsd 2001-02-01 no 9.11
3324324 2018-06-01 yes 56.03
3324324 2019-04-30 no 0.11
我的尝试是对其进行排序
df = df.sort_values(by=['EAN-Unique','Date','Value'], ascending=[True,True,True]).reset_index(drop=True)
但它没有按预期工作。谁能帮帮我?
谢谢!
【问题讨论】:
-
为什么
df.sort_values(by='EAN-Unique')不起作用? -
为什么 3434343 排在第一位?
-
因为 3434343 的值最低(对于它的最早日期)。
-
那么为什么 asd2343 排名第二?
-
因为 asd2343 在其较早的日期中具有第二低的值。而 5234XAR 排名第三,因为它在早期的所有产品中具有三分之一的最低值。 Xjkhfsd 排在第四位,因为它的早期值是第四低的。而 3324324 则排在第五位,因为它在之前的日期中拥有最高的价值。
标签: python pandas sorting pandas-groupby