我有一份高中名单。我想从字符串中删除某些字符,单词和符号。
我目前有:
df['schoolname'] = df['schoolname'].str.replace('high', "")
但是,我想使用一个列表,以便我可以快速替换high
,school
,/
等。
有什么建议吗?
df['schoolname'] = df['schoolname'].str.replace(['high', 'school'], "")
不起作用
答案 0 :(得分:15)
使用正则表达式(按|
分隔字符串):
df['schoolname'] = df['schoolname'].str.replace('high|school', "")
答案 1 :(得分:0)
您可以创建字典,然后创建.replace({}, regex=True)
方法:
replacements = {
'schoolname': {
r'(high|school)': ''}
}
df.replace(replacements, regex=True, inplace=True)
答案 2 :(得分:0)
我的问题:我想找到一种简单的解决方案,即使用对熊猫的replace方法删除字符/符号。
我在数据框中有以下数组:
df = array(['2012', '2016', '2011', '2013', '2015', '2017', '2001', '2007',
'[2005], ©2004.', '2005', '2009', '2008', '2009, c2008.', '2006',
'2019', '[2003]', '2018', '2012, c2011.', '[2012]', 'c2012.',
'2014', '2002', 'c2005.', '[2000]', 'c2000.', '2010',
'2008, c2007.', '2011, c2010.', '2011, ©2002.', 'c2011.', '[2017]',
'c1996.', '[2018]', '[2019]', '[2011]', '2000', '2000, c1995.',
'[2004]', '2005, ©2004.', 'c2004.', '[2009]', 'c2009.', '[2014]',
'1999', '[2010]', 'c2010.', '[2006]', '2007, 2006.', '[2013]',
'c2001.', 'C2016.', '2008, c2006.', '2011, ©2010.', '2007, c2005.',
'2009, c2005.', 'c2002.', '[2004], c2003.', '2009, c2007.', '2003',
'©2003.', '[2016]', '[2001]', '2010, c2001.', '[1998]', 'c1998.'],
dtype=object)
如您所见,年份是使用多种格式(ugh!)输入的,并带有方括号和版权符号以及小写c和大写C。
现在,我想删除那些不需要的字符,并且只有四位数的年份。由于它是一个数组,因此在使用replace()之前,还需要将其转换为字符串。创建一个要替换的所有字符的变量,并用'|将它们分开。 '。
rep_chars = 'c|C|\]|\[|©|\.'
df[Year] = df['Year'].str.replace(rep_chars,"")
确保使用
\.
而不是句点。与\]
和\[
相同。
输出:
array(['2012', '2016', '2011', '2013', '2015', '2017', '2001', '2007',
'2005, 2004', '2005', '2009', '2008', '2009, 2008', '2006', '2019',
'2003', '2018', '2012, 2011', '2014', '2002', '2000', '2010',
'2008, 2007', '2011, 2010', '2011, 2002', '1996', '2000, 1995',
'2004', '1999', '2007, 2006', '2008, 2006', '2007, 2005',
'2009, 2005', '2004, 2003', '2009, 2007', '2010, 2001', '1998'],
dtype=object)
快乐的数据清理!