背景
我正在寻找将约1.1m列表的文本文件转换为JSON,然后转换为熊猫数据框。当前已设置文件,以使每个列表仅由换行符分隔,并以以下方式进行结构化:
['Here is a string!', 'London, England', [[-2.68, 50.92], [-2.68, 50.96], [-2.61, 50.96], [-2.61, 50.92]], 'FakeUserName', 1234567, [('581294', 'Other_user')]]
问题
我想将每个列表转换为JSON,然后写入新文件,然后可以在对的单独调用中使用它pd.read_json
。由于提到元素的长度可变(提到元组的数量没有限制),我遇到了困难。理想情况下,结果数据框将包含以下列:
+-----+--------------------+-----------------------+----------------+------------+---------+--------------------------+
| | String | LOC | BB | User | ID | Mentions |
+-----+--------------------+-----------------------+----------------+------------+---------+--------------------------+
| 0 | "Here is a string" | ('London', 'England') | [[-2.68..],..] | 'FakeUser' | 1234567 | [(581294, 'other_user')] |
| 1 | | | | | | |
| ... | | | | | | |
+-----+--------------------+-----------------------+----------------+------------+---------+--------------------------+
到目前为止的工作
ast.literal_eval(line)
以允许建立索引。json.dumps(line)
,然后传递给数据框。这会将列表转换为JSON数组,导致在传递给pd.read_json
json_normalize
如如何使用某些列将JSON扁平化pandas数据框所述?。df = pd.DataFrame({"String": list[0], "LOC":list[1]... })
对我错过的事情有什么建议吗?事实证明,这比我最初设想的要困难得多。
编辑
在表中添加了示例列表,以演示我正在尝试执行的操作。
如果我正确理解了您的问题,则通过json传递只会增加复杂性。
DataFrame构造函数应该足够了:
with open('file.txt') as fd:
df = pd.DataFrame(columns=['String', 'LOC', 'BB', 'User', 'ID', 'Mentions'],
data = [ast.literal_eval(line) for line in fd])
重复您的样本4次,我得到:
String LOC BB User ID Mentions
0 Here is a string! London, England [[-2.68, 50.92], [-2.68, 50.96], [-2.61, 50.96... FakeUserName 1234567 [(581294, Other_user)]
1 Here is a string! London, England [[-2.68, 50.92], [-2.68, 50.96], [-2.61, 50.96... FakeUserName 1234567 [(581294, Other_user)]
2 Here is a string! London, England [[-2.68, 50.92], [-2.68, 50.96], [-2.61, 50.96... FakeUserName 1234567 [(581294, Other_user)]
3 Here is a string! London, England [[-2.68, 50.92], [-2.68, 50.96], [-2.61, 50.96... FakeUserName 1234567 [(581294, Other_user)]
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句