首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >petl -如何用零替换空值

petl -如何用零替换空值
EN

Stack Overflow用户
提问于 2017-05-01 17:10:58
回答 2查看 1.1K关注 0票数 1

对于petl表,如何用零替换空值?

我希望有以下几点:

代码语言:javascript
复制
tb_probii = etl.fromcsv("data.csv").fill("score", "", 0)

在这里寻找类似的函数:modules/petl/transform/fills.html

但没有运气

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-05-04 14:42:15

我发邮件给帮助组python@googlegroups.com,创建者自己也用一个功能来回应:

代码语言:javascript
复制
tb_probii = etl.fromcsv("data.csv").replace("score", "", 0)
票数 1
EN

Stack Overflow用户

发布于 2017-05-01 18:22:20

我不知道这是不是最好的办法。我真的很感谢你让我注意到了petl的存在。

代码语言:javascript
复制
>>> import petl
>>> tb_probii = petl.fromcsv('trial.csv')
>>> tb_probii
+------+-------+
| team | score |
+======+=======+
| 'A'  | ''    |
+------+-------+
| 'B'  | '25'  |
+------+-------+
| 'C'  | '35'  |
+------+-------+

>>> from collections import OrderedDict
>>> mappings = OrderedDict()
>>> def f(s):
...     if s == '':
...         return '0'
...     else:
...         return s
...     
>>> mappings['team'] = 'team'
>>> mappings['score'] = 'score', lambda s: f(s)
>>> tb_probii = petl.fieldmap(tb_probii, mappings)
>>> tb_probii 
+-------+------+
| score | team |
+=======+======+
| '0'   | 'A'  |
+-------+------+
| '25'  | 'B'  |
+-------+------+
| '35'  | 'C'  |
+-------+------+

一些解释:fieldmap执行包含在OrderedDict中的映射集合。当我尝试这样做时,我做了到一个新表的映射。这就是为什么team被完全映射到自己的原因。如果你保持同一张桌子,这可能是不必要的,尽管我对此表示怀疑。每个映射都是一个元组。用于score的一个表示要通过转换将score映射到自身。使用lambda似乎是必要的;然而,lambda不能包含if语句。为此,我为lambda调用创建了函数f。我认为这些列是重新排序的,因为容器是一个OrderedDict,而且它是按字典顺序排列的列的名称。也许它不一定是一个OrderedDict,但这正是我在文档中发现的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43723225

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档