熊猫系列麻烦。尝试使用Regex剥离或更换

时间:2019-06-20 19:06:14

标签: python regex pandas

在熊猫数据框(df)中,我有一个要清理的序列(df ['reports'])。

该系列中的每个字符串都有一些我想从中删除的垃圾,例如:     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

1 个答案:

答案 0 :(得分:0)

您是否正在寻找类似的东西?

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

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

编辑:由于系列条目实际上是词典列表,因此解决方案是:

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