python - Pandas 通过拆分现有列添加列

标签 python pandas

我是 Pandas 新手。我正在处理一些示例数据。

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

列表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'}]

关于python - Pandas 通过拆分现有列添加列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54439173/

相关文章:

python - Pandas,来自 2 个 DF 的两列的总和值

python - Pandas 数据框数据透视表和分组

python - 使用邻域和对 3D 数组进行子采样

python - 使用 Flask 进行 pytest 无法找到模块

python - 如何处理 sklearn 随机森林中的类别不平衡。我应该使用样本权重还是类别权重参数

python - 在 pandas 数据框单元格中插入列表

python - 如何使用 matplotlib 绘制复杂的条形图——具有多行条形的多个子图?

python - 使用 NLTK 删除停用词

python - 我可以可靠地使用 python 字典键方法生成的列表索引吗?

python - 根据行值使用其他列的名称填充新的 pandas 数据框列