将jsons列表转换成dataframe,然后一步一步
Convert a list of jsons into a dataframe and then step-by-step
我有问题。我有一个包含 2549150
元素的列表。但是,我不想使用 pd.json_normalize
方法一次将整个列表转换为数据框。
我想逐步将列表转换为数据框。首先,我想转换列表的前 100,000 个元素,然后从 100,000 + 1 个元素转换为接下来的 100,000 个元素,依此类推。
但是,问题是我的数据框末尾包含 2500000
个元素,而不是 2549150
个元素。因此,我有太多错误的因素。我该如何修复错误?
总而言之,我想在 100,000 步内将列表转换为数据框。
import pandas as pd
my_Dict = {
'_key': '1',
'group': 'test',
'data': {},
'type': '',
'code': '007',
'conType': '1',
'flag': None,
'createdAt': '2021',
'currency': 'EUR',
'detail': {
'selector': {
'number': '12312',
'isTrue': True,
'requirements': [{
'type': 'customer',
'requirement': '1'}]
}
}
}
a1D= [my_Dict] * 2549150
size = 25 # Didn't want to calculate this myself, but didn't know how else to solve it.
df_complete = pd.DataFrame()
for i in range(0,len(a1D),len(a1D)//size):
#print(i)
df = pd.json_normalize(a1D[i:i+100000], sep='_')
#print(df.shape)
df_complete= pd.concat([df_complete, df])
df_complete.shape
>>> [OUT]
>>> (2500000, 11)
不要逐步猜测应该有多少个元素,而是按块大小逐步增加到数组的长度:
df_complete = pd.DataFrame()
chunk = 100000
for i in range(0, len(a1D), chunk):
df = pd.json_normalize(a1D[i:i+chunk], sep='_')
df_complete = pd.concat([df_complete, df])
df_complete.shape
输出:
(2549150, 11)
我有问题。我有一个包含 2549150
元素的列表。但是,我不想使用 pd.json_normalize
方法一次将整个列表转换为数据框。
我想逐步将列表转换为数据框。首先,我想转换列表的前 100,000 个元素,然后从 100,000 + 1 个元素转换为接下来的 100,000 个元素,依此类推。
但是,问题是我的数据框末尾包含 2500000
个元素,而不是 2549150
个元素。因此,我有太多错误的因素。我该如何修复错误?
总而言之,我想在 100,000 步内将列表转换为数据框。
import pandas as pd
my_Dict = {
'_key': '1',
'group': 'test',
'data': {},
'type': '',
'code': '007',
'conType': '1',
'flag': None,
'createdAt': '2021',
'currency': 'EUR',
'detail': {
'selector': {
'number': '12312',
'isTrue': True,
'requirements': [{
'type': 'customer',
'requirement': '1'}]
}
}
}
a1D= [my_Dict] * 2549150
size = 25 # Didn't want to calculate this myself, but didn't know how else to solve it.
df_complete = pd.DataFrame()
for i in range(0,len(a1D),len(a1D)//size):
#print(i)
df = pd.json_normalize(a1D[i:i+100000], sep='_')
#print(df.shape)
df_complete= pd.concat([df_complete, df])
df_complete.shape
>>> [OUT]
>>> (2500000, 11)
不要逐步猜测应该有多少个元素,而是按块大小逐步增加到数组的长度:
df_complete = pd.DataFrame()
chunk = 100000
for i in range(0, len(a1D), chunk):
df = pd.json_normalize(a1D[i:i+chunk], sep='_')
df_complete = pd.concat([df_complete, df])
df_complete.shape
输出:
(2549150, 11)