下面是从弹性搜索中获取一些数据并将这些数据导出到名为“mycsvfile”的csv文件的代码。在
我想更改列名,以便人类可以阅读。在
代码如下:
from elasticsearch import Elasticsearch
import csv
es = Elasticsearch(["9200"])
# Replace the following Query with your own Elastic Search Query
res = es.search(index="search", body=
{
"_source": ["DTDT", "TRDT", "SPLE", "RPLE"],
"query": {
"bool": {
"should": [
{"wildcard": {"CN": "TEST1"}}
]
}
}
}, size=10)
with open('mycsvfile.csv', 'w') as f: # Just use 'w' mode in 3.x
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.writeheader()
header_present = True
w.writerow(my_dict)
当我运行上述查询时,CSV文件数据如下所示:
^{pr2}$如您所见,列名与查询中的相同,我希望在生成文件时为它们提供可读的名称。在
有人能给我显示并修改我的代码,让我在CSV文件中输入列名吗?在
提前谢谢你
如果你不介意或者愿意的话,你可以尝试使用熊猫。如果你使用熊猫,你的解决方案是:
另外,我只想补充一下,如果您的头情况不同或者您的索引列不在那里,您可能需要对df creation语句进行一些调整。以下是文档link:
那怎么样?在第5行或第5行初始化客户机后定义翻译,例如:
然后替换这行代码:
^{pr2}$说实话,没有测试这个,但它应该能完成任务,而且简单透明。您可能需要确保所有字段名的翻译都是实际提供的。在
或者,在Elasticsearch中使用有意义的字段名如何:-)?在
您需要的是重命名字典键。To do that, you can for example pop it to a new column name.将dtdtdt更改为date的示例。在
我想你可以想出如何重命名其他专栏。之后,您可以在for循环中调用
w.writerow
。在相关问题 更多 >
编程相关推荐