如何从变量的单元格中提取信息并将其放入重复行?

时间:2018-06-06 16:08:16

标签: string python-3.x pandas data-manipulation data-cleaning

我有一个'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

我该怎么做?

1 个答案:

答案 0 :(得分:1)

这就是所谓的取消,我使用str.splitstr.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