2017-10-17 7 views
0

以下のクエリはデータを取得してCSVファイルを作成していますが、問題は「SPLE」という名前のソースがデータベースに0,150のデータを格納することです。数値データをCSVファイルのテキストに変更します

しかしCSVでこれらの数字はCSVに収集されており、そのような

0 =真

1 = Falseの

、などの単語を表現するために、それらの番号をCSVを作成するときに、私は何とか希望

50 =保留中

誰かが私にこれをどのようにしてくれているか教えてもらえますか、私はこれに苦労していますか?

マイコード

from elasticsearch import Elasticsearch 
import csv 

es = Elasticsearch(["9200"]) 

res = es.search(index="search", body= 
       { 
        "_source": ["DTDT", "TRDT", "SPLE", "RPLE"], 
        "query": { 
         "bool": { 
          "should": [ 
           {"wildcard": {"CN": "TEST*"}} 

          ] 
         } 
        } 
}, size=10) 



header_names = { 'DTDT': 'DATE', 'SPLE': 'TAG', ...} 

with open('mycsvfile.csv', 'w') as f: 
    header_present = False 
    for doc in res['hits']['hits']: 
     my_dict = doc['_source'] 
     if not header_present: 
      w = csv.DictWriter(f, my_dict.keys()) 
      w.writerow(header_names) 
      header_present = True 


     w.writerow(my_dict) 

CSVファイルで出力する:FYI

Date  SPLE  Venue 
20171016 1  Central 
20171016 1  Central 
20171016 0  Central 
20171016 0  Central 
20171016 50  Central 
20171016 0  Central 
20171016 1  Central 

:私はパンダを使用しようとしました

しかし、私はので、私はパンダをインストールすることができませんこれに別の方法があるのだろうかと疑問に思っていますか?

+0

変更my_dict' 'の内容、ニーズに従ってためのループでw.writerow(my_dict)' 'の前に。 – ZdaR

+0

私に教えてもらえますか?私はそれが間違っていると思う – Rich

答えて

1

値を変更することができますフォアあなたはcsvファイルに書き込む:

mapping = {0: "True", 
      1: "False", 
      50: "Pending"} 
# Map `SPLE` 
sple = my_dict['SPLE'] 
my_dict['SPLE'] = mapping.get(int(sple), sple) 

# Map `NME` 
nme = my_dict['NME'] 
my_dict['NME'] = mapping.get(int(nme), nme) 


w.writerow(my_dict) 
+0

残念ながら、これは動作していません。 w.writerow(my_dict)の前にコードを追加しています – Rich

+0

私は少し修正しました(spleをintに変換しました)。 –

+0

エラーが発生しますか? –

0

my_dictの内容を見ることなく、これはちょうど最高の推測ですが、私は私の前提を述べることを試みます。

my_dict["SPLE"] = str(bool(int(my_dict["SPLE"]))) if int(my_dict["SPLE"]) in [0,1] else "Pending" 

ザ・がのコンパクトな形式です:

my_dict = {"DATE": ..., "SPLE": ..., ...} 

w.writerow(my_dict)前にあなたがして欲しいものにSPLEエントリを解析することができ、次のことのようですmy_dictについては

# Check to see if current "SPLE" value can be described 
# as True (1) or False (0) 
if int(my_dict["SPLE"]) in [0,1]: 
    # Yes it can, so change it to True or False string by type conversion 
    my_dict["SPLE"] = str(bool(int(my_dict["SPLE"]))) 
else: 
    # Entry is not a 0 or 1 so not described by true or false 
    # assign to "Pending" 
    my_dict["SPLE"] = "Pending" 
+0

私のコードでこれを追加する場所を私に示すことができます。 w.writerowの前に追加しましたが失敗しました。 – Rich

+0

'w.writerow()'の前に書いてください。あなたはあなたのエラーを投稿して、 'my_dict = doc ['source']'の後に 'print(my_dict)'を真っ直ぐ入れてください。 –

+0

編集して、あなたの問題を解決できない場合があります。そうでない場合は、私が最後のコメントで要求したものを提供できる場合、私はもっと助けることができます。 –

関連する問題