首页 > 解决方案 > 无法从字符串中获取子字符串。需要帮助

问题描述

我有一个包含字符串的列

'ID=1,Name=GDNDL380F4,Type=FTT-87, Value=GDNDL380F4,Registration Info: Sn = GDNDL380F4, Service Level=Service Level Disabled'

|Column               
|'ID=1,Name=GDNDL380F4,Type=FTT-87, Value=GDNDL380F4,Registration Info: Sn = GDNDL380F4, Service Level=Service Level Disabled'|  
|'ID=1,Name=GDNDL4040F4,Type=FTT-87, Value=GDNDL4040F4,Registration Info: Sn = GDNDL380F4, Service Level=Service Level Disabled'|  
|'ID=1,Name=GDNDL380F5,Type=FTT-87, Value=GDNDL380F5,Registration Info: Sn = GDNDL380F4, Service Level=Service Level Disabled'|     

预期输出:

Name       |  Type  |  
GDNDL380F4 |FTT-87  |  
GDNDL4040F4|FTT-87  | 
GDNDL380F5 |FTT-87  | 

我需要的是在 Name= 到列 Name 之后获取子字符串(GDNDL380F4),在 Type= 到列 Type 之后获取子字符串(FTT-87)。

我用 str.extract、find 和 re.find 尝试了不同的方法,但由于某种原因,我得到了错误的结果(nan 或空数组)。所以需要帮助。

标签: pythonpandas

解决方案


从字符串中制作字典并按键获取项目

s = 'ID=1,Name=GDNDL380F4,Type=FTT-87, Value=GDNDL380F4,Registration Info: Sn = GDNDL380F4, Service Level=Service Level Disabled'
d = dict(item.split("=") for item in s.split(","))
print(d['Name']) # GDNDL380F4
print(d['Type']) # FTT-87

熊猫解决方案:

df1=pd.DataFrame([dict(y.split("=") for y in x.strip("' ").split(",")) for x in df['Column']], 
                  index=df.index)
print (df1)
  ID         Name    Type        Value Registration Info: Sn   \
0  1   GDNDL380F4  FTT-87   GDNDL380F4             GDNDL380F4   
1  1  GDNDL4040F4  FTT-87  GDNDL4040F4             GDNDL380F4   
2  1   GDNDL380F5  FTT-87   GDNDL380F5             GDNDL380F4   

            Service Level  
0  Service Level Disabled  
1  Service Level Disabled  
2  Service Level Disabled  

推荐阅读