Как извлечь информацию из ячейки переменной и поместить ее в дублированную строку? - PullRequest
0 голосов
/ 06 июня 2018

У меня есть набор данных с 'UserID', система, используемая пользователем 'System', и объединение этих двух.Вот пример набора данных :

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], мне нужно вынуть второйsystem - P2Z_010, создайте новую строку с тем же UserID и поместите системную информацию- P2Z_010 с обновленным CONCAT A.

     UserID   System         CONCAT A
0     ANTANAS  P1B_010    P1B_010|ANTANAS
0.5   ANTANAS  P2Z_010    P2Z_010|ANTANAS
1     AWYGASC  P1B_010    P1B_010|AWYGASC
1.5   AWYGASC  P2Z_010    P2Z_010|AWYGASC

Как я могу это сделать?

1 Ответ

0 голосов
/ 06 июня 2018

Это так называемое unnesting, я использую 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...