在python数据框架中创建索引查找

2024-05-05 01:22:35 发布

您现在位置: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开始按顺序打印,如图所示


1条回答
网友
1楼 · 发布于 2024-05-05 01:22:35

使用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

相关问题 更多 >