python - 在 python 数据框中创建索引查找
问题描述
![在此处输入图像描述][1]
要为“IMEI & IMSI”对创建索引,如下所示:
- IMEI索引(命名为A):按顺序为每个IMEI分配一个编号,从整数1开始。
- IMSI索引(命名为B):为每个IMSI分配一个编号,意思是:如果一个IMEI出现不止一次,成对的IMSI将按顺序分配,例如:1、2、3...] [2]
这就是我正在尝试的
import pandas as pd
import numpy as np
df1 = pd.readcsv('file.csv')
df1 = df1[['Imei','Imsi']]
df1 = df1.groupby(['Imei']).count()
df1 = df1.rename(columns = {'Imsi': 'Occurences'})
df1 = df1.sort_values(by=['Occurences'],ascending= False)
df1 = df1.reset_index()
我可以计算出现次数,但如何从 1 开始按顺序打印它们,如图所示
解决方案
用于cumsum
计算IMEI Index
和groupby_cumcount
计算IMSI Index
。
# Setup
df = pd.DataFrame({'Imei': {0: 'A', 1: 'A', 2: 'B', 3: 'B', 4: 'C', 5: 'C', 6: 'C', 7: 'D', 8: 'E'}})
df['IMEI Index'] = df['Imei'].ne(df['Imei'].shift()).cumsum()
df['IMSI Index'] = df.groupby('Imei').cumcount().add(1)
输出:
>>> df
Imei IMEI Index IMSI Index
0 A 1 1
1 A 1 2
2 B 2 1
3 B 2 2
4 C 3 1
5 C 3 2
6 C 3 3
7 D 4 1
8 E 5 1
推荐阅读
- python - 运行 pyspark 时无法注册错误
- c++ - 通过引用使用变量
- c# - 获取 C# 中最长字符串的表示形式
- qt - 通过 QML 代码打开/显示和关闭/隐藏弹出窗口
- sequelize.js - 使用 Sequelize / PostgreSQL 使用 NestJS 上传表单数据
- ios - React Native FBSDK IOS 构建失败
- python - Matplotlib 仍未安装在 v3.8.6 的 python 上。(之前我在 v3.9 上)
- linux - Linux Kernel上游驱动的源码结构要求
- yaml - 如何在 YAML 管道中指定 .NET Framework 版本?
- python - 如果满足条件,则使用列名更新行值