从熊猫系列列表中删除元素

时间:2018-11-19 19:28:08

标签: python string pandas list series

我一直在从网站搜索解决方案和提示,但找不到与我的案件直接相关的问题。

我从各个站点抓取了文本数据,并使用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

我不确定为什么我的数据出现错误。可以得到一些建议吗?谢谢!

1 个答案:

答案 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]