【发布时间】:2019-04-22 05:02:54
【问题描述】:
我一直在从网站上寻找解决方案和提示,但找不到与我的案例直接相关的问题。
我已经从各个站点抓取了文本数据,并使用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
我不确定为什么我的数据出现错误。可以得到一些建议吗?谢谢!
【问题讨论】:
-
不要将列表存储在一个系列中
-
如果我不将列表存储在系列中,那么对于这种情况有什么建议?
-
解决方案感谢 Toby 的想法: def remover(list): return [s for s in list if s !='' and s != ' '] df['new'] = df[' split'].apply(remover) 使用此方法,您无需删除 NaN 值。
标签: python string pandas list series