我得到了一个latin-1 .txt数据集,我正在尝试清理该数据集以用于使用python 3和pandas进行适当的分析。从html抓取的数据集包含多个\ xa0出现,我似乎无法使用解码,剥离,-u替换或我在堆栈溢出时发现的任何其他方法来处理。我所有的尝试似乎都被python所忽略,仍然打印出相同的结果。当我刚接触数据时,很可能错过了一些显而易见的事情,但是现在我看不到前进的方向
我试图解码为ascii,剥离为str,然后替换,或者使用-u子句替换,而不导致任何结果
filepath = 'meow3.txt'
outF = open("myOutFile.txt", "a")
with open(filepath) as fp:
line = fp.readline()
for line in fp:
if line.strip().startswith(','):
line = line.replace(',','',1)
line = line.replace(u'\xa0', u' ')
print(line)
df = pd.read_csv('myOutFile.txt', sep=",", encoding="latin-1", header=None, names=["Company name", "Total", "Invested since-to"])
print (df)
3sun Group, £10m ,Feb 2014
,Abacus, £4.15m ,Aug 2013
,Accsys Group ,£12m, Mar 2017,
Acro ,\xa0£7.8m, Nov 2015 – Sep 2017,
ACS Clothing, £25.3m ,Jan 2014
这是数据集的外观,以及为什么在我的代码中我删除了第一个逗号(如果它在列的开头)。但是我尝试过的所有建议答案似乎都无法帮助删除数据集的\ xa0部分,仍然给出相同的结果(如上所示)。如果有人对我如何进行这项工作有任何线索,我将不胜感激, 干杯, 耶利哥
编辑:虽然我知道最好将其转换为txt文件之前进行预处理,但是我无法访问或控制该过程,因此我必须处理获得的数据。
答案 0 :(得分:2)
我今天突然被这个问题困扰,终于找到了最快,最整洁的解决方案。 假设您的熊猫数据框具有一列,其值类似于'South \ xa0Carolina'。
使用以下代码删除所有的'\ xa0'。其实我已经尝试过.replace(“ \ xa0”,“”)和.replace(r'\ xa0',r''),但是它们都不起作用。
data['col'].str.split().str.join(' ')
答案 1 :(得分:0)
也许解码到UTF8的行会有所帮助
line = line.decode('UTF-8')
然后在必要时进行字符串替换。
答案 2 :(得分:0)
在阅读文件后执行此操作。
df['col'] = df['col'].apply(lambda x: str(x).replace(u'\xa0', u''))