Pandas字符串从字符串类似字典的 Dataframe 中提取

zaq34kh6  于 2023-03-06  发布在  其他
关注(0)|答案(1)|浏览(81)

我不是很清楚如何使用Pandas字符串提取功能,我会感谢一些帮助
我有一个这样的 Dataframe

lista=[ "{'FIRST_id': 'awe', 'THIS_id': 'awec_20230222_1626_i0ov0w', 'NOTTHIS_id': 'awep_20230222_1628_p8f5hd52u3oknc24'}","{'FIRST_id': 'awe', 'THIS_id': 'awec_20230222_1626_i0ov0w', 'NOTTHIS_id': 'awep_20230222_1641_jwjajtals49wc88p'}"]
dfpack=pd.DataFrame(lista,columns=["awesome_config"])
print(dfpack)

所以在"awesome_config"列中,我有一些包含信息的字符串

awesome_config
0  {'FIRST_id': 'awe', 'THIS_id': 'awec_20230222...
1  {'FIRST_id': 'awe', 'THIS_id': 'awec_20230222...

我只想获取列的"THIS_id"信息
因此,我想得到的是一个 Dataframe ,其中

THIS_id
awec_20230222_1626_i0ov0w
awec_20230222_1626_i0ov0w

我一直在尝试

#dd=dfpack['awesome_config'].str.extract(pat= "({'FIRST_id':'awe', 'THIS_id':).")
dd=dfpack['awesome_config'].str.extract(pat= "({'FIRST_id':'awe').")
print(dd)

但他们都给了我一个有NaN的 Dataframe
我如何在这里正确使用extract?
编辑:
我是带着这个来的

dd=dfpack['awesome_config'].str.extract(r"^({'FIRST_id': 'awe', 'THIS_id': )(?P<THIS_id>.*), 'NOTTHIS_id':(?P<restofit>).* ")

但现在我有了

0    'awec_20230222_1626_i0ov0w'
1    'awec_20230222_1626_i0ov0w'
Name: THIS_id, dtype: object

所以报价单还在,我需要没有报价单的

mec1mxoz

mec1mxoz1#

可以使用ast.literal_eval将字符串计算为dict,然后使用str.get (str[])获得所需的键:

from ast import literal_eval
key = 'THIS_id'
dd=pd.DataFrame({key:dfpack['awesome_config'].apply(literal_eval).str[key]})
print(dd)

                     THIS_id
0  awec_20230222_1626_i0ov0w
1  awec_20230222_1626_i0ov0w

相关问题