gpt4 book ai didi

python - 如何将具有字符串值(如 '[title:item][' title2 :item]'. ..etc)的列拆分为带有 pandas 的字典

转载 作者:太空宇宙 更新时间:2023-11-03 15:46:08 24 4
gpt4 key购买 nike

我正在尝试清理数据框中的一些数据。特别是显示如下的列:

0    [Bean status:Whole][Type of Roast:Medium][Coff...
1 [Type of Roast:Espresso][Coffee Type:Blend]
2 [Bean status:Whole][Type of Roast:Dark][Coffee...
3 [Bean status:Whole][Type of Roast:Light][Coffe...
4 NaN
5 [Roaster:Little City][Type of Roast:Light][Cof...

Name: options, dtype: object

我的目标是将其分成四列并将相应的值分配给列,如下所示:

     Roaster    Bean Status    Type of Roast    Coffee Type
0 NaN Whole Medium Blend
1 NaN NaN Espresso Blend
..
5 Littl... Whole Light Single Origin

我试过 df.str.split('[', expand=True) 但它不适合,因为选项并不总是存在或位于相同位置。

我的想法是尝试将字符串拆分成一个字典并将该字典存储在一个新的数据框中,然后将两个数据框连接在一起。但是,我在尝试将列存储到字典中时迷路了。我试过这样做:https://www.fir3net.com/Programming/Python/python-split-a-string-into-a-dictionary.html像这样:

roasts = {}
roasts = dict(x.split(':') for x in df['options'][0].split('[]'))
print(roasts)

我得到这个错误:

ValueError: dictionary update sequence element #0 has length 4; 2 is required

我尝试通过存储到列表来调查这里发生了什么:

s = ([x.split(':') for x in df['options'][0].split('[]')])
print(s)

[['[Bean status', 'Whole][Type of Roast', 'Medium][Coffee Type', 'Blend]']]

所以我看到代码没有按照我想要的方式拆分字符串,并且尝试将单个括号替换到那些不同的位置,但没有得到正确的结果。

是否可以将此列放入字典中,还是我必须求助于正则表达式?

最佳答案

使用 AmiTavory 的示例数据

df = pd.DataFrame(dict(options=[
'[Bean status:Whole][Type of Roast:Medium]',
'[Type of Roast:Espresso][Coffee Type:Blend]'
]))

re.findallstr.split 的结合

import re
import pandas as pd

pd.DataFrame([
dict(
x.split(':')
for x in re.findall('\[(.*?)\]', v)
)
for v in df.options
])

Bean status Coffee Type Type of Roast
0 Whole NaN Medium
1 NaN Blend Espresso

关于python - 如何将具有字符串值(如 '[title:item][' title2 :item]'. ..etc)的列拆分为带有 pandas 的字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49848978/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com