转换数据帧时出现问题(python、pandas)

2024-04-28 09:52:55 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我有下面的数据框。我想把它改造成按“剩余天数”排序的方式。ID可以多次使用,并且所有报告编号都是唯一的。但我希望每个ID都出现一次,然后再使用已经使用过的ID

例如,AABBCC->;ABCABC或AABCCC->;ABCACC

我该如何扭转局面

^{tb1}$

这件事

^{tb2}$

Tags: 数据gtid排序报告方式编号天数
2条回答

cumcount应该有效

df.sort_values("Days Left") \
  .assign(order=lambda x: x.groupby("ID").cumcount()) \
  .sort_values(["order", "Days Left"]) \
  .drop(columns="order")

我喜欢这个解决方案

ID=[171,171,182,182]
Report=[11,12,13,14]
DaysLeft=[5,9,1,2]

df=pd.DataFrame({'id':ID,'report':Report,'daysleft':DaysLeft})
df=df.sort_values(by="daysleft",ascending=True)\
.assign(order=lambda x: x.groupby("id").cumcount())\
.sort_values(by=['order','daysleft'])

output:
    id  report  daysleft  order
2  182      13         1      0
0  171      11         5      0
3  182      14         2      1
1  171      12         9      1

相关问题 更多 >