python - 熊猫从拆分现有列中添加列
问题描述
我是熊猫新手。我正在处理一些示例数据。
My sample data is
'Col1' 'Col2' 'Query'
10000 101 $name=XXX&#age=18&#mark=100
10001 102 $name=YYY&#age=17&#mark=95
这是我的 CSV 数据。我想将其加载到如下数据框中,
'Col1' 'Col2' 'Query' $name #age #mark
10000 101 $name=XXX&#age=18&#mark=100 XXX 18 100
10001 102 $name=YYY&#age=17&#mark=95 YYY 17 95
到目前为止我尝试过的是,
querydf = pd.DataFrame(rundf['Query'].str.split('&').tolist())
我通过将列拆分来创建了一个数据'Query'
框'&'
。但在那之后,我如何拆分这些列表'='
并将第一项添加为标题?
解决方案
为每一行创建字典列表并调用DataFrame
构造函数:
L = []
for v in df['Query']:
out = {}
for x in v.split('&'):
a, b = x.split('=')
out[a] = b
L.append(out)
print (L)
[{'$name': 'XXX', '#age': '18', '#mark': '100'},
{'$name': 'YYY', '#age': '17', '#mark': '95'}]
df = df.join(pd.DataFrame(L))
print (df)
Col1 Col2 Query #age #mark $name
0 10000 101 $name=XXX&#age=18&#mark=100 18 100 XXX
1 10001 102 $name=YYY&#age=17&#mark=95 17 95 YYY
list 的另一个解决方案L
是通过以下方式解析查询parse_qs
:
from urllib.parse import parse_qs
L = [{k: v[0] for k, v in dict(parse_qs(v)).items()} for v in df['Query']]
print (L)
[{'$name': 'XXX', '#age': '18', '#mark': '100'},
{'$name': 'YYY', '#age': '17', '#mark': '95'}]