我有一个'UserID'
的数据集,用户'System'
使用的系统以及这两者的串联。以下是data set:
RolCatBR_IDMqes1.loc[0:15]
UserID System CONCAT A
0 ANTANAS P1B_010, P2Z_010 P1B_010|ANTANAS
1 AWYGASC P1B_010, P2Z_010 P1B_010|AWYGASC
2 CHENQIA P1B_010, P2Z_010 P1B_010|CHENQIA
3 CHENQIA P3Z_020, P3Z_030 P3Z_020|CHENQIA
4 DBORZUT P1B_010, P2Z_010 P1B_010|DBORZUT
5 DURAKER P1B_010, P2Z_010 P1B_010|DURAKER
6 JEBINDE P1B_010, P2Z_010 P1B_010|JEBINDE
7 SMETTAN P1B_010, P2Z_010 P1B_010|SMETTAN
8 TKAUL13 P3Z_020, P3Z_030 P3Z_020|TKAUL13
9 VATERCH P3Z_020, P3Z_030 P3Z_020|VATERCH
10 ABUNNEN P2Z_010 P2Z_010|ABUNNEN
11 AMILSKI P2Z_010 P2Z_010|AMILSKI
12 ANMUE24 P2Z_010 P2Z_010|ANMUE24
13 BKAEPPL P2Z_010 P2Z_010|BKAEPPL
14 BRUDERA P2Z_010 P2Z_010|BRUDERA
15 CHRROMM P2Z_010 P2Z_010|CHRROMM
例如:第一行[0]
,我需要取出第二个系统 - P2Z_010
,创建具有相同UserID
的新行并输入系统信息 - {{ 1}}更新了P2Z_010
。
CONCAT A
我该怎么做?
答案 0 :(得分:1)
这就是所谓的取消,我使用str.split
和str.len
repeat
s=df['System'].str.split(',')
pd.DataFrame({'UserID':df.UserID.repeat(s.str.len()),'System':sum(s.tolist(),[]),'CONCATA':df.CONCATA.repeat(s.str.len())})
Out[531]:
CONCATA System UserID
0 P1B_010|ANTANAS P1B_010 ANTANAS
0 P1B_010|ANTANAS P2Z_010 ANTANAS
1 P1B_010|AWYGASC P1B_010 AWYGASC
1 P1B_010|AWYGASC P2Z_010 AWYGASC
2 P1B_010|CHENQIA P1B_010 CHENQIA
2 P1B_010|CHENQIA P2Z_010 CHENQIA
3 P3Z_020|CHENQIA P3Z_020 CHENQIA
3 P3Z_020|CHENQIA P3Z_030 CHENQIA
4 P1B_010|DBORZUT P1B_010 DBORZUT
4 P1B_010|DBORZUT P2Z_010 DBORZUT
5 P1B_010|DURAKER P1B_010 DURAKER
5 P1B_010|DURAKER P2Z_010 DURAKER
6 P1B_010|JEBINDE P1B_010 JEBINDE
6 P1B_010|JEBINDE P2Z_010 JEBINDE
7 P1B_010|SMETTAN P1B_010 SMETTAN
7 P1B_010|SMETTAN P2Z_010 SMETTAN
8 P3Z_020|TKAUL13 P3Z_020 TKAUL13
8 P3Z_020|TKAUL13 P3Z_030 TKAUL13
9 P3Z_020|VATERCH P3Z_020 VATERCH
9 P3Z_020|VATERCH P3Z_030 VATERCH
10 P2Z_010|ABUNNEN P2Z_010 ABUNNEN
11 P2Z_010|AMILSKI P2Z_010 AMILSKI
12 P2Z_010|ANMUE24 P2Z_010 ANMUE24
13 P2Z_010|BKAEPPL P2Z_010 BKAEPPL
14 P2Z_010|BRUDERA P2Z_010 BRUDERA
15 P2Z_010|CHRROMM P2Z_010 CHRROMM