gpt4 book ai didi

python - 使用 Pandas 解析 json 行

转载 作者:行者123 更新时间:2023-11-28 19:05:06 25 4
gpt4 key购买 nike

我有一个包含数百万行的大型 json 文件。该文件中也有一些错误消息。下面是示例:

{"MEASUREMENT_1":"12345678","MEASUREMENT_2":"123456789012","MEASUREMENT_3":"MEASUREMENT_TYPE","MEASUREMENT_4":1111111111111,"MEASUREMENT_5":-1122,"MEASUREMENT_6":-2233,"MEASUREMENT_7":"123456789"}
{"MEASUREMENT_1":"87654321","MEASUREMENT_2":"987654321098","MEASUREMENT_3":"MEASUREMENT_TYPE_2","MEASUREMENT_4":222222222222,"MEASUREMENT_5":-4455,"MEASUREMENT_6":-6677,"MEASUREMENT_7":"123456789"}
[2015-12-02 02:00:02,530] WARN Reconnect due to socket error: null
[2015-12-02 02:00:02,633] WARN Reconnect due to socket error: null

正如预期的那样,由于文件中的错误消息行,下面的代码抛出一个 ValueError

#!/usr/bin/python3.5
import pandas as pd # Version 0.21.0
df = pd.read_json(file, lines=True)

由于这是一个非常大的文件,我使用了 chunksize 和一个预期值,如下所示:

max_records = 1e5
df = pd.read_json(file, lines=True, chunksize=max_records)
filtered_data = pd.DataFrame() # Initialize the dataframe
try:
for df_chunk in df:
filtered_data = pd.concat([filtered_data, df_chunk])
except ValueError:
print ('\nSome messages in the file cannot be parsed')

但上述方法的缺点是它遗漏了一些行。有没有更好的方法来做到这一点?我浏览了 http://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_json.html 的文档,但找不到任何可以忽略未解析行的内容。有人可以帮忙吗?

最佳答案

最后,找到了一个解决方案来删除文件中的错误消息。但是,此过程会增加清理文件并将其另存为新文件的时间

    #!/usr/bin/python3.5

import re
import pandas as pd # Version 0.21.0

def clean_data(filename):
with open(filename, "r") as inputfile:
for row in inputfile:
if re.match("\[", row) is None:
yield row

with open(clean_file, 'w') as outputfile:
for row in clean_data(filename):
outputfile.write(row)

max_records = 1e5
df = pd.read_json(clean_file, lines=True, chunksize=max_records)

关于python - 使用 Pandas 解析 json 行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47912706/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com