我有一个多行 json 数据集,其中包含多个可以存在或不存在的字段,并且可以包含字符串、字符串列表或更复杂的映射(dicts 列表)中的文本数据
例如。:
{"yvalue":1.0,"field1":"Some text", "field2":"More Text", "field3": ["text","items","in","list"], "field4":[{"id":3,"name":"text"},{"id":4,"name":"text"}]}
{"yvalue":2.0,"field2":"More Text2", "field3": ["text2","items2","in2","list2"], "field4":[{"id":4,"name":"text"},{"id":4,"name":"text"}], "field5":"extra text"}
...
需要此数据集作为 sklearn 管道的输入
首先,我正在通过 pandas 读取文件
df = pandas.read_json(args.input_file, lines=True)
但我想使用管道转换器,例如DataframeMapper
将所有文本字段(甚至是嵌套的)连接到一个巨大的文本字段。考虑到某些字段可能会丢失,是嵌套结构等的一部分。
输出看起来像:
y值 | 文本
1.0 | 列表文本文本中的一些文本更多文本文本项
2.0 | 更多 Text2 text2 items2 in2 list2 text text extra text
当然我可以使用自定义转换器,但由于我也有兴趣将管道转换为 mleap 或 pmml 格式,因此我宁愿尽可能避免使用自定义转换器。
是否有最佳实践甚至简单的方法来做到这一点而不会太老套?
更新
显然我想要的可能有点太多了,但可能更容易一些:有没有办法使用 pandas 中的转换器连接 2 个(或更多)类似字符串的字段:
df[['field1', 'field2']].apply(lambda x: ' '.join(x.astype(str)), axis=1)