根据当前表结构,生成分组列,并根据分组列生成新的归类
处理前表结构:
site | cell | rruid | |
---|---|---|---|
0 | a | a1 | 60 |
1 | a | a1 | 61 |
2 | a | a2 | 62 |
3 | a | a3 | 60 |
4 | a | a3 | 64 |
5 | b | b1 | 60 |
6 | b | b2 | 61 |
处理后表结构:(cell已经升序排列)
site | cell | rruid | rru_group | sx | |
---|---|---|---|---|---|
0 | a | a1 | 60 | 60,61 | S0 |
1 | a | a1 | 61 | 60,61 | S0 |
2 | a | a2 | 62 | 62 | S1 |
3 | a | a3 | 60 | 60,64 | S0 |
4 | a | a3 | 64 | 60,64 | S0 |
5 | b | b1 | 60 | 60 | S0 |
6 | b | b2 | 61 | 61 | S1 |
新增列生成规则:
‘rru_group’
相同cell下所有出现的rruid用,分割
‘sx’
‘site’下首次出现的cell,扇区编号sx标记为S0
依次查看相同site下的剩余cell的rruid,如果他的rruid在前面的rru_group出现过,则他的sx编号和该小区相同,否则sx编号+1
前面的代码如下:
import pandas as pd
data={
'site':['a', 'a', 'a', 'a','a', 'b', 'b'],
'cell':['a1', 'a1', 'a2', 'a3', 'a3', 'b1', 'b2'],
'rruid':[60, 61, 62, 60, 64, 60, 61]
}
df=pd.DataFrame(data)
df_group=df.set_index(['cell','rruid'])
map_dict = {}
for i in df_group.index.levels[0]:
temp = [str(j) for j in df_group.loc[i].index.values]
map_dict[i] = ','.join(temp)
df['rru_group'] = df['cell'].map(map_dict)
df
相似问题