2024-05-01 04:47:26 发布
网友
对于petl表,如何用零替换空值?在
我预计会有如下情况:
tb_probii = etl.fromcsv("data.csv").fill("score", "", 0)
在这里寻找类似的函数: http://petl.readthedocs.io/en/latest/_modules/petl/transform/fills.html
但运气不佳:/
我不知道这是不是最好的办法。我真的很感谢你让我注意到{}的存在。在
>>> 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;但是lambdas不能包含if语句。为此,我为lambda创建了要调用的函数f。我认为这些列是重新排序的,因为容器是一个OrderedDict,并且它是按列名称按字典顺序排序的。也许它不一定是OrderedDict,但这是我在doc中发现的。在
fieldmap
OrderedDict
team
score
lambda
if
f
我给帮助小组发了邮件python-etl@googlegroups.com造物主自己用一个完美的功能来回应:
tb_probii = etl.fromcsv("data.csv").replace("score", "", 0)
我不知道这是不是最好的办法。我真的很感谢你让我注意到{}的存在。在
一些解释:
fieldmap
执行OrderedDict
中包含的映射集合。当我尝试这个方法时,我做了一个新表的映射。这就是为什么team
与自身完全相同的映射。如果你保持同一张桌子,这可能是不必要的,尽管我有点怀疑。每个映射都是一个元组。用于score
的值表示score
将通过转换映射到自身。似乎有必要使用lambda
;但是lambdas不能包含if
语句。为此,我为lambda创建了要调用的函数f
。我认为这些列是重新排序的,因为容器是一个OrderedDict
,并且它是按列名称按字典顺序排序的。也许它不一定是OrderedDict
,但这是我在doc中发现的。在我给帮助小组发了邮件python-etl@googlegroups.com造物主自己用一个完美的功能来回应:
相关问题 更多 >
编程相关推荐