将 csv 转换为 json 时如何修复此错误
How can i fix this error when converting csv to json
我正在尝试将 CSV 文件写入 elasticsearch 数据库,但首先我想将其作为 json 传递,但我一直收到此错误,我不知道如何解决...
下面是代码
from haystack.document_store.elasticsearch import ElasticsearchDocumentStore
document_store = ElasticsearchDocumentStore(host="localhost", username="", password="", index="document")
import pandas as pd
df = pd.read_csv('Data/FINAL_CORD_DATA_0.csv')
dicts = df.to_dict('records')
final_dicts = []
for each in dicts:
tmp = {}
tmp['text'] = each.pop('body_text')
tmp['meta'] = each
final_dicts.append(tmp)
这是我在 运行 最后一个单元格
时收到的错误消息
KeyError Traceback (most recent call last)
<ipython-input-13-e5e7b4b7ff5a> in <module>
2 for each in dicts:
3 tmp = {}
----> 4 tmp['text'] = each.pop('body_text')
5 tmp['meta'] = each
6 final_dicts.append(tmp)
KeyError: 'body_text'
pandas 中的 to_dict()
意味着原始 DataFrame 中的通常 NaN-Values 导致根本不创建相应的字典 key-value-pair。我可以想象 DataFrame 的某些部分包含 NaN(或 auto-converted 到 NaN 的空字符串),因此某些字典可能没有 key-value-pair for 'body_text'
.
你可以捕捉到这种情况,例如通过为这样的字典填写一个空字符串:
for each in dicts:
tmp = {}
if 'body_text' in each:
tmp['text'] = each.pop('body_text')
else:
tmp['text'] = ""
tmp['meta'] = each
final_dicts.append(tmp)
我正在尝试将 CSV 文件写入 elasticsearch 数据库,但首先我想将其作为 json 传递,但我一直收到此错误,我不知道如何解决...
下面是代码
from haystack.document_store.elasticsearch import ElasticsearchDocumentStore
document_store = ElasticsearchDocumentStore(host="localhost", username="", password="", index="document")
import pandas as pd
df = pd.read_csv('Data/FINAL_CORD_DATA_0.csv')
dicts = df.to_dict('records')
final_dicts = []
for each in dicts:
tmp = {}
tmp['text'] = each.pop('body_text')
tmp['meta'] = each
final_dicts.append(tmp)
这是我在 运行 最后一个单元格
时收到的错误消息KeyError Traceback (most recent call last)
<ipython-input-13-e5e7b4b7ff5a> in <module>
2 for each in dicts:
3 tmp = {}
----> 4 tmp['text'] = each.pop('body_text')
5 tmp['meta'] = each
6 final_dicts.append(tmp)
KeyError: 'body_text'
to_dict()
意味着原始 DataFrame 中的通常 NaN-Values 导致根本不创建相应的字典 key-value-pair。我可以想象 DataFrame 的某些部分包含 NaN(或 auto-converted 到 NaN 的空字符串),因此某些字典可能没有 key-value-pair for 'body_text'
.
你可以捕捉到这种情况,例如通过为这样的字典填写一个空字符串:
for each in dicts:
tmp = {}
if 'body_text' in each:
tmp['text'] = each.pop('body_text')
else:
tmp['text'] = ""
tmp['meta'] = each
final_dicts.append(tmp)