首页 > 解决方案 > Pandas Dataframe - 添加显示满足条件的行数的列

问题描述

我有一个数据框:

import pandas as pd
df = pd.DataFrame({'item': ['A', 'A', 'B', 'B', 'B', 'B', 'C']})
df
物品
0 一个
1 一个
2
3
4
5
6 C

我想添加entrynum从 1 开始显示每个项目的行号的列,所以我的数据框看起来像这样:

物品 条目编号
0 一个 1
1 一个 2
2 1
3 2
4 3
5 4
6 C 1

我可以逐行迭代 Pandas 数据帧,如果item值更改设置entrynum值等于,1否则设置entrynum等于​​前一个entrynum值加1。但我想知道是否存在更好的解决方案?

我在想我想要的类似于 SQL 窗口函数,但我不明白如何通过item.

标签: pythonpandasdataframeiteration

解决方案


按项目分组并累计计算每个组中的实体。将输出存储在入口列中。

 df['entrynum']=df.groupby('item').cumcount()+1

推荐阅读