python - 从 Pandas 系列列表中删除元素
问题描述
我一直在从网站上寻找解决方案和提示,但找不到与我的案例直接相关的问题。
我已经从各个站点抓取了文本数据,并使用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
我不确定为什么我的数据出现错误。可以得到一些建议吗?谢谢!
解决方案
您可以使用列表理解:
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]
推荐阅读
- loopback4 - Loopback 4 命令行脚本:键“repositories.CurrencyRepository”未绑定到上下文中的任何值
- docker - gunicorn 偶尔会冻结,直到在带有烧瓶的琐碎 docker web 应用程序中工作人员超时
- javascript - Nuxtjs 更改默认 UI 框架
- android - Xamarin.forms androidx.core.content.FileProvider
- python - 对象引用=类名()和对象引用=类名有什么区别?
- json - 如何解码其属性作为值存储在另一个名为“属性”的属性中的 JSON 对象?
- wordpress - Rest API 根据 woocommerce 中的用户 ID 将产品存储在购物车中
- matlab - 从 Matlab 中的自定义概率密度函数中绘制随机数
- python - 如何从嵌套在两个列表中的字典中获取值?
- javascript - Memoize Reselect 选择器输出基于单个输入选择器而不是全部