首页 > 解决方案 > 需要从 Pandas Dataframe 的一列中删除几个字符

问题描述

我已经尝试了各种方法来删除 D 列中的Call[]'。我错过了什么?

excel复制/粘贴

我试过了:

.str.replace

df.Required_no_Email.replace("\(", 'xxx', regex=True)

df.Required_no_Email.replace('\(|\)', '', regex=True)

df.Required_no_Email.str.strip('()')

还有很多其他人,但我已经忘记了我尝试过的其他内容。

这是脚本

from bs4 import BeautifulSoup # BeautifulSoup is in bs4 package
import requests
import re
import pandas as pd


URL = 'https://reallyfrustrated.com'
content = requests.get(URL)

soup = BeautifulSoup(content.text, 'html.parser')


business = soup.find('title')
companys = business.get_text()


phones = soup.find_all(text=re.compile("Call (.*)"))



data = {'Required':[companys], 'Required_no_Email':[phones]}

df = pd.DataFrame(data, columns = ['Required','First', 'Last', 'Required_no_Email', 'Business Fax'])



writer = pd.ExcelWriter("ProspectUploadSheetRob.xlsx", engine='xlsxwriter')

df.to_excel(writer, sheet_name='Sheet1', index=False, startrow=4, header=3)

workbook  = writer.book
worksheet = writer.sheets['Sheet1']

header_format = workbook.add_format({
    'bold': False,
    'text_wrap': False,
    'valign': 'top',
    'fg_color': False,
    'border': False})


for col_num, value in enumerate(df.columns.values):
    worksheet.write(4, col_num, value, header_format)

df.Required_no_Email.str.strip('()')

writer.save()

标签: python-3.xpandasxlsxwriter

解决方案


@RobK 以下适用于您要替换的任何字符的单行。在传递regex=True和使用 \转义字符并使用带|的或分隔符的尝试中,您已经非常接近了。. 您需要记住使用 df.Required_no_Email = 设置更改。

import pandas as pd
df = pd.DataFrame({'Required' : ['CTC Landscaping'],
                   'Required_no_Email' : ['''['Call (123) 456-7890']''']})
df.Required_no_Email = df.Required_no_Email.replace('\[|\]|\'|\(|\)', '', 
                                                    regex=True)
df

@RobK 你说你的代码没有改变任何东西。我的猜测是您在创建 writer 对象后放置了脚本的替换部分。它在下面为我工作。我创建了自己的数据框来代替您代码中漂亮的汤部分,并且效果很好。我还会附上截图:

import pandas as pd
df = pd.DataFrame({'Required' : ['CTC Landscaping'],
'Required_no_Email' : ['''['Call (123) 456-7890']''']})
df.Required_no_Email = df.Required_no_Email.replace('\[|\]|\'|\(|\)', '', 
                                                    regex=True)
writer = pd.ExcelWriter("ProspectUploadSheetRob.xlsx", engine='xlsxwriter')


df.to_excel(writer, sheet_name='Sheet1', index=False, startrow=4, header=3)

workbook  = writer.book
worksheet = writer.sheets['Sheet1']

header_format = workbook.add_format({
    'bold': False,
    'text_wrap': False,
    'valign': 'top',
    'fg_color': False,
    'border': False})


for col_num, value in enumerate(df.columns.values):
    worksheet.write(4, col_num, value, header_format)

df.Required_no_Email.str.strip('()')

writer.save()

在此处输入图像描述


推荐阅读