将字符串解析为列
parse string into columns
我有一个名为“名称”的列。它是字符串类型。它看起来像这样:
name
attr1=val1a; attr2=val2a; attr3=val3a; attr4=val4a
attr1=val1b; attr5=val5b; attr3=val3b; attr6=val6b
我想将此列解析为:
attr1
attr2
attr3
attr4
attr5
attr6
val1a
val2a
val3a
val4a
Null
Null
val1b
Null
val3b
Null
val5b
val6b
有人可以帮我找到在 python 中执行此操作的方法。
提前致谢!
你可以按 ;
拆分每个字符串,对于每个拆分,按 =
拆分并将其转换为字典,然后使用 pd.json_normalize
:
new_df = pd.json_normalize(df['name'].str.split(r';\s*').apply(lambda lst: dict(i.split('=') for i in lst)))
输出:
>>> new_df
attr1 attr2 attr3 attr4 attr5 attr6
0 val1a val2a val3a val4a NaN NaN
1 val1b NaN val3b NaN val5b val6b
我有一个名为“名称”的列。它是字符串类型。它看起来像这样:
name |
---|
attr1=val1a; attr2=val2a; attr3=val3a; attr4=val4a |
attr1=val1b; attr5=val5b; attr3=val3b; attr6=val6b |
我想将此列解析为:
attr1 | attr2 | attr3 | attr4 | attr5 | attr6 |
---|---|---|---|---|---|
val1a | val2a | val3a | val4a | Null | Null |
val1b | Null | val3b | Null | val5b | val6b |
有人可以帮我找到在 python 中执行此操作的方法。
提前致谢!
你可以按 ;
拆分每个字符串,对于每个拆分,按 =
拆分并将其转换为字典,然后使用 pd.json_normalize
:
new_df = pd.json_normalize(df['name'].str.split(r';\s*').apply(lambda lst: dict(i.split('=') for i in lst)))
输出:
>>> new_df
attr1 attr2 attr3 attr4 attr5 attr6
0 val1a val2a val3a val4a NaN NaN
1 val1b NaN val3b NaN val5b val6b