[英]Pandas Dataframe - add column which shows row count satisfying condition
我有一个 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 开始的每个项目的行号,所以我的 dataframe 看起来像这样:
物品 | 条目号 | |
---|---|---|
0 | 一种 | 1个 |
1个 | 一种 | 2个 |
2个 | 乙 | 1个 |
3个 | 乙 | 2个 |
4个 | 乙 | 3个 |
5个 | 乙 | 4个 |
6个 | C | 1个 |
我可以逐行迭代 Pandas dataframe 并且如果item
值更改设置entrynum
值等于1
否则设置entrynum
等于前一个entrynum
值加1
。 但我想知道是否存在更好的解决方案?
我在想我想要的类似于 SQL window 函数,但我不明白如何按item
提供分区。
按项目分组并累计计算每个组中的实体。 将 output 存储在入口栏中。
df['entrynum']=df.groupby('item').cumcount()+1
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.