【问题标题】:How to change numerical data to custom text words in CSV file如何将数字数据更改为 CSV 文件中的自定义文本词
【发布时间】:2017-10-16 22:02:25
【问题描述】:

下面的查询是抓取数据并创建一个 CSV 文件,我遇到的问题是名为“SPLE”的源在数据库中存储了数字为 0、1、50 的数据。

但是在 CSV 中,这些数字正在被收集到 CSV 中,我希望在创建 CSV 时以某种方式将这些数字表示为诸如,

0 = 真

1 = 错误

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 文件中的输出为:

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

【问题讨论】:

  • 您能否发布一个查询结果res 的示例结果?
  • 日期 TAG 上课地点 20171016 0 5 Central 20171016 1 5 Central 20171016 1 5 Central 20171016 0 5 Central 20171016 50 5 Central 20171016 0 5 Central 20171016 0 15 Central 201>
  • 我不确定您是否能理解评论部分的输出?但是 TAG 列有数字,我想要代表数字的文本。如果这有意义
  • 我无法理解查询输出。您能否在问题中添加格式化的结果。

标签: python python-2.7 python-3.x csv python-3.6


【解决方案1】:

我假设 mycsvfile.csv 文件有 SPLE 列。

from elasticsearch import Elasticsearch

es = Elasticsearch(["9200"])

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

                            ]
                        }
                    }
}, size=10)


import pandas as pd 


SPLE = {0:'true',1:'false',50:'pending'}

saved_csv = pd.read_csv('mycsvfile.csv',sep='\t')

saved_csv['SPLE'] = saved_csv['SPLE'].map(lambda x: SPLE[int(x)])

saved_csv.to_csv('edited_csv.csv', index=False)

【讨论】:

  • 我也得到一个错误 - import pandas as pd ModuleNotFoundError: No module named 'pandas'
  • @Rich 我正在更新我的代码。您需要使用 pip install pandas 安装 python pandas
  • 我尝试安装 pandas 并获得连接超时。还有其他方法吗?
  • 在连接被 'ConnectTimeoutError(,'与 pypi.python.org 的连接超时。(连接超时 = 15)')':/simple/wheel/
  • @Rich 尝试从here 下载轮文件。导航到下载的文件夹并执行pip install wheel_file_name.whl
【解决方案2】:

在某处声明一个字典来进行翻译:

SPLE_TRANSLATION = {0: 'True', 1: 'False', 50: 'Pending'}

然后,在你的循环中:

my_dict['SPLE'] = SPLE_TRANSLATION[my_dict['SPLE']]
w.writerow(my_dict)

【讨论】:

  • 我将您的代码添加到我的代码中,但它没有工作,也许我没有将它正确放置在我的代码中
猜你喜欢
  • 1970-01-01
  • 2018-03-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-08
  • 1970-01-01
  • 2019-05-23
  • 2021-12-06
相关资源
最近更新 更多