Նշում․ տողերով առանձնացված json-ն այժմ աջակցվում է read_json
(0.19.0-ից):
In [31]: pd.read_json('{"a":1,"b":2}\n{"a":3,"b":4}', lines=True)
Out[31]:
a b
0 1 2
1 3 4
կամ ոչ թե json տողի, այլ ֆայլի/ֆայլուղու միջոցով.
pd.read_json(json_file, lines=True)
Դա կախված կլինի ձեր DataFrames-ի չափից, որն ավելի արագ է, բայց մեկ այլ տարբերակ է օգտագործել str.join
-ը՝ ձեր «JSON» բազմակի տողը ջարդելու համար (Նշում. այն վավեր json չէ), վավեր json և օգտագործել read_json:
In [11]: '[%s]' % ','.join(test.splitlines())
Out[11]: '[{"a":1,"b":2},{"a":3,"b":4}]'
Այս փոքրիկ օրինակի համար սա ավելի դանդաղ է, եթե մոտ 100-ը նույնն է, զգալի շահույթը, եթե այն ավելի մեծ է...
In [21]: %timeit pd.read_json('[%s]' % ','.join(test.splitlines()))
1000 loops, best of 3: 977 µs per loop
In [22]: %timeit l=[ json.loads(l) for l in test.splitlines()]; df = pd.DataFrame(l)
1000 loops, best of 3: 282 µs per loop
In [23]: test_100 = '\n'.join([test] * 100)
In [24]: %timeit pd.read_json('[%s]' % ','.join(test_100.splitlines()))
1000 loops, best of 3: 1.25 ms per loop
In [25]: %timeit l = [json.loads(l) for l in test_100.splitlines()]; df = pd.DataFrame(l)
1000 loops, best of 3: 1.25 ms per loop
In [26]: test_1000 = '\n'.join([test] * 1000)
In [27]: %timeit l = [json.loads(l) for l in test_1000.splitlines()]; df = pd.DataFrame(l)
100 loops, best of 3: 9.78 ms per loop
In [28]: %timeit pd.read_json('[%s]' % ','.join(test_1000.splitlines()))
100 loops, best of 3: 3.36 ms per loop
Նշում. այդ ժամանակ միացումը զարմանալիորեն արագ է:
18.11.2013
data = pd.read_json('/path/to/file.json', lines=True)
-ում 23.05.2018dfs = pd.read_json('file', lines=True, chunksize=x)
ևfor df in dfs: df.head()
07.06.2018