I have a column that contains string like
JavaScript
x
7
1
'ID=1,Name=GDNDL380F4,Type=FTT-87, Value=GDNDL380F4,Registration Info: Sn = GDNDL380F4, Service Level=Service Level Disabled'
2
3
|Column
4
|'ID=1,Name=GDNDL380F4,Type=FTT-87, Value=GDNDL380F4,Registration Info: Sn = GDNDL380F4, Service Level=Service Level Disabled'|
5
|'ID=1,Name=GDNDL4040F4,Type=FTT-87, Value=GDNDL4040F4,Registration Info: Sn = GDNDL380F4, Service Level=Service Level Disabled'|
6
|'ID=1,Name=GDNDL380F5,Type=FTT-87, Value=GDNDL380F5,Registration Info: Sn = GDNDL380F4, Service Level=Service Level Disabled'|
7
Expected Output:
JavaScript
1
5
1
Name | Type |
2
GDNDL380F4 |FTT-87 |
3
GDNDL4040F4|FTT-87 |
4
GDNDL380F5 |FTT-87 |
5
What I need is to get the substring (GDNDL380F4) after Name= to column Name and substring (FTT-87) after Type= to column Type.
I tried different approaches with str.extract, find and re.find but for some reason I get wrong result (nan or an empty array). So help is needed.
Advertisement
Answer
Make a dictionary from the string and get the items by key
JavaScript
1
5
1
s = 'ID=1,Name=GDNDL380F4,Type=FTT-87, Value=GDNDL380F4,Registration Info: Sn = GDNDL380F4, Service Level=Service Level Disabled'
2
d = dict(item.split("=") for item in s.split(","))
3
print(d['Name']) # GDNDL380F4
4
print(d['Type']) # FTT-87
5
Pandas solution:
JavaScript
1
13
13
1
df1=pd.DataFrame([dict(y.split("=") for y in x.strip("' ").split(",")) for x in df['Column']],
2
index=df.index)
3
print (df1)
4
ID Name Type Value Registration Info: Sn
5
0 1 GDNDL380F4 FTT-87 GDNDL380F4 GDNDL380F4
6
1 1 GDNDL4040F4 FTT-87 GDNDL4040F4 GDNDL380F4
7
2 1 GDNDL380F5 FTT-87 GDNDL380F5 GDNDL380F4
8
9
Service Level
10
0 Service Level Disabled
11
1 Service Level Disabled
12
2 Service Level Disabled
13