我一直在从网站搜索解决方案和提示,但找不到与我的案件直接相关的问题。
我从各个站点抓取了文本数据,并使用str.split('\n')
分割了文本。文本中包含很多“ \ n”,以这种方式进行拆分非常理想。 (请让我知道这种方法是否太糟糕了。)
df['scrape']
0 \nWebsite:\n\n\n\nVisit\n\n \nWhite paper:\n\n...
1 \nWebsite:\n\n\n\nVisit\n\n \nWhite paper:\n\n...
2 \nWebsite:\n\n\n\nVisit\n\n \nWhite paper:\n\n...
3 \nWebsite:\n\n\n\nVisit\n\n \nWhite paper:\n\n...
4 \nWebsite:\n\n\n\nVisit\n\n \nWhite paper:\n\n...
5 \nWebsite:\n\n\n\nVisit\n\n \nWhite paper:\n\n...
结果是一个Pandas系列列表–所有元素都是字符串列表。
df['split'] = df['scrape'].str.split('\n')
0 [, Website:, , , , Visit, , , White paper:, ,...
1 [, Website:, , , , Visit, , , White paper:, ,...
2 [, Website:, , , , Visit, , , White paper:, ,...
3 [, Website:, , , , Visit, , , White paper:, ,...
4 [, Website:, , , , Visit, , , White paper:, ,...
5 [, Website:, , , , Visit, , , White paper:, ,...
6 [, Website:, , , , Visit, , , White paper:, ,...
我要删除每个列表中的None元素(“”和“”)。
我尝试循环:
for i in series:
While ‘’ in i:
i.remove(‘’)
上面的代码可用于我创建的任意示例,但是对于我的实际数据,它将产生错误。
for i in df['split']:
... while '' in i:
... i.remove('')
...
Traceback (most recent call last):
File "<stdin>", line 2, in <module>
TypeError: argument of type 'float' is not iterable
我不确定为什么我的数据出现错误。可以得到一些建议吗?谢谢!
答案 0 :(得分:1)
您可以使用列表理解:
new_series = [s for s in series if s!='' and s!=' ' and s!=None]
要将列表推导应用于Pandas系列列表(基本上是列表的列表)中的每个元素,您需要像这样嵌套列表推导:
new_series = [[s for s in element if s!='' and s!=' ' and s!=None] for element in series]