Pandas系列的麻烦。尝试使用Regex剥离或替换

2024-06-08 19:05:01 发布

您现在位置:Python中文网/ 问答频道 /正文

在pandas数据帧(df)中,我有一个系列(df['reports']),我想清理它

系列中的每个字符串都有一些我想从中删除的垃圾,例如: 数据框['报告'][10]

[{'url': 'http://208.xx.xx.19/uploads/media/default/0001/02/e633f1d80a61d17e041ffd994355ccb618a024e5.pdf'}]

我想删除的是:(用双引号)

左边的“[{'url':'”

以及

右边的“}]”

我已经试过了:

df['reports'].str.lstrip('url') #this didn't work, even just to remove the 'url' part
df['reports'].replace({'[{}]'}regex=True,inplace=True,to_replace=r'\[\{\'\w{3}',value=r'
df['reports'].replace(regex=True,inplace=True,to_replace=r'\[\{\'url\'',value=r'')
df['reports'] = df['reports'].map(lambda x: x.lstrip('\[{\'url\': \'').rstrip('\'}]\''))

现在我在尝试:

df['reports'].replace({'\[\{\'url\'':' '},regex=True,inplace=True)

我希望这些解决方案中至少有一个要么去掉我不想要的角色,要么给我类似的东西 “http://208.xx.xx.19/uploads/media/default/0001/02/e633f1d80a61d17e041ffd994355ccb618a024e5.pdf”表示序列中的每个“单元格”

编辑:在此处创建一个模拟数据系列,作为所需输出的示例:

In: df['reports']

Out:
*reports*
http://208.xx.xx.19/uploads/media/default/0001/02/e633f1.pdf
http://208.xx.xx.19/uploads/media/default/0001/02/exyz2.pdf
http://208.xx.xx.19/uploads/media/default/0001/02/e633342.pdf
http://208.xx.xx.19/uploads/media/default/0001/02/ashj39.pdf
http://208.xx.xx.19/uploads/media/default/0001/02/asdji34q2.pdf
Name: reports, Length: 155, dtype: object

Tags: to数据truehttpdefaulturldfpdf
1条回答
网友
1楼 · 发布于 2024-06-08 19:05:01

你在找这样的东西吗

df['reports'].str.replace("^\[{'url': ","").str.replace("}\]$","")

第一个“str.replace”在开头查找模式“[{'url':”,第二个在结尾查找模式“}]”

编辑:因为序列条目实际上是一个字典列表,所以解决方案是:

df['reports'].apply(lambda x:x[0]['url'])

相关问题 更多 >