2017-05-01 8 views

答えて

1

私は、ヘルプグループ[email protected]と自身が完全に働いた機能で応答クリエイター電子メ​​ールで送信:あなたのansweため

tb_probii = etl.fromcsv("data.csv").replace("score", "", 0) 
+0

より良い方法を見つけたかどうか聞いてみました。とても楽しい学習体験。 –

1

私は知りません最高の方法かどうか。私は実際にpetlの存在を私の注意を引くためにあなたに感謝しています。

>>> 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' | 
+-------+------+ 

いくつかの説明: fieldmapOrderedDictに含まれるマッピングのコレクションを実行します。これを試してみたら、新しいテーブルにマッピングしました。そのため、teamはそれ自体と同じようにマップされます。私は何とかそれを疑うが、あなたが同じテーブルを保っているなら、これは不必要かもしれない。各マッピングはタプルです。 scoreのものは、scoreが変換でそれ自身にマップされることを示します。 lambdaを使用する必要があるようです。ただし、lambdasにはifステートメントを含めることはできません。そのため私はラムダが呼び出すために関数fを作成しました。私は、コンテナがOrderedDictであり、列名で辞書順に並べられているので、列の順序が変更されたと思います。おそらくそれはOrderedDictである必要はありませんが、これは私が文書で見つけたものです。

+1

感謝を!私はあなたとペットを分かち合うことができてうれしいです!私は良いデータを争うツールを探しています。 Blazeも試してみることを検討してください。あなたが他の提案があるなら、私は聞いてみたいと思う。 – Selah

関連する問題