此问题在此处已有答案:
Rank within groups using python-pandas [duplicate](2个答案)
17小时前关闭
我在Python Pandas中有一个Data Frame,如下所示:
- 列my_date采用日期时间格式。
- 在我的真实的DataFrame中,我有更多的列。
| ID|我的约会|col1|
| --|--|--|
| 111 |2023-05-15 2023-05-15 2023-05-15| 1 |
| 111 |2023-05-14 2023-05-14 2023-05-14| 11 |
| 111 |2023-05-13 2023-05-13 2023-05-13| 2 |
| 222 |2023-10-11 2023-10-11| 3 |
| 222 |2023-10- 12 2023-10-12 2023-10-12| 55 |
我需要创建新的列col_x,其中每个id的值将是1,2,3,等等,基于列my_date中的日期。因此,对于列col_x中的每个id,在my_date的早期日期中必须是1,等等。
因此,我需要下面这样的东西:
| ID|我的约会|col1|列x|
| --|--|--|--|
| 111 |2023-05-15 2023-05-15 2023-05-15| 1 | 3 |
| 111 |2023-05-14 2023-05-14 2023-05-14| 11 | 2 |
| 111 |2023-05-13 2023-05-13 2023-05-13| 2 | 1 |
| 222 |2023-10-11 2023-10-11| 3 | 1 |
| 222 |2023-12- 12 2023-12-12 2023-12-12| 55 | 2 |
如何在Python Pandas中做到这一点?
1条答案
按热度按时间axkjgtzd1#
您可以使用
groupby.rank
:字符串
这或多或少相当于找到排序顺序(例如使用
numpy.argsort
或rank('first')
),除了它会对重复值进行同等排名:型
输出量:
型
具有重复值的示例:
型