【发布时间】:2023-02-08 14:25:56
【问题描述】:
我有一个看起来像这样的数据框(英国日期):
| Type | Date |
|---|---|
| 1 | 01/01/2022 |
| 2 | 02/01/2022 |
| 3 | 03/01/2022 |
| 1 | 04/01/2022 |
| 2 | 05/01/2022 |
| 2 | 06/01/2022 |
我目前正在添加两种类型的列,其中包含一个大的 for 循环。第一个是具有较旧日期的相同类型的行数,第二个是相同类型和较旧日期的最新行与当前行之间的天数(-1,如果没有较旧的行同类型)。
例如,数据框将变为:
| Type | Date | Previous count | Days since latest previous |
|---|---|---|---|
| 1 | 01/01/2022 | 0 | -1 |
| 2 | 02/01/2022 | 0 | -1 |
| 3 | 03/01/2022 | 0 | -1 |
| 1 | 04/01/2022 | 1 | 3 |
| 2 | 05/01/2022 | 1 | 3 |
| 2 | 06/01/2022 | 2 | 1 |
有没有比简单的 for 循环更有效的方法?
【问题讨论】:
-
根据您以后要对数据执行的操作,您可以使用
df.groupby("Type")为所有类型创建单独的 DataFrame。那些你可以按日期订购的,你基本上拥有所有信息,因为“以前的计数”将只是一个不断增加的数字。