Python 如何正确地将列表附加到for循环中的数据帧

Python 如何正确地将列表附加到for循环中的数据帧,python,pandas,loops,dataframe,Python,Pandas,Loops,Dataframe,我正试图将字符串列表(文件中的行)中的每一项添加到我的数据帧中。该行填充了转储到列表中并转换为json的键和值。问题是我无法让pandas从循环中的列表中正确地生成数据帧(代码被卡在循环中) 下面是每条线的外观 line = {'protocol': 'https', 'instanceid': 'beacond-lga13-1349-12003', 'raw_data': 'i|200|122!i|200|114!i|200|117', 'source_ip': '90.227.61.0',

我正试图将字符串列表(文件中的行)中的每一项添加到我的数据帧中。该行填充了转储到列表中并转换为json的键和值。问题是我无法让pandas从循环中的列表中正确地生成数据帧(代码被卡在循环中)

下面是每条线的外观

line = {'protocol': 'https', 'instanceid': 'beacond-lga13-1349-12003', 'raw_data': 'i|200|122!i|200|114!i|200|117', 'source_ip': '90.227.61.0', 'ts': 1549434199, 'jobid': '1uxw9ir', 'geocode': 'SE', 'referer': 'https://sv.cam4.com/female', 'user_agent': 'Mozilla/5.0 (Linux; Android 8.0.0; SAMSUNG SM-G935F/G935FXXS3ERL4 Build/R16NW) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/8.2 Chrome/63.0.3239.111 Mobile Safari/537.36', 'appid': '157pr4o', 'app_version': 1536174158, 'asn': 3301}

我将创建一个列表列表,然后构建您的数据框架。例如:

收集每个列表后 列表=[[a]、[b], ['c','d']] #传递您的列表(如果您愿意,您也可以命名列!) 数据帧(列表,列=['col1','col2']) 输出:


  col1 col2
0    a    b
1    c    d

我将创建一个列表列表,然后构建您的数据框架。例如:

收集每个列表后 列表=[[a]、[b], ['c','d']] #传递您的列表(如果您愿意,您也可以命名列!) 数据帧(列表,列=['col1','col2']) 输出:


  col1 col2
0    a    b
1    c    d

如果我这样做,我可以在中阅读您的列表:

line = {'protocol': 'https', 'instanceid': 'beacond-lga13-1349-12003', 'raw_data': 'i|200|122!i|200|114!i|200|117', 'source_ip': '90.227.61.0', 'ts': 1549434199, 'jobid': '1uxw9ir', 'geocode': 'SE', 'referer': 'https://sv.cam4.com/female', 'user_agent': 'Mozilla/5.0 (Linux; Android 8.0.0; SAMSUNG SM-G935F/G935FXXS3ERL4 Build/R16NW) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/8.2 Chrome/63.0.3239.111 Mobile Safari/537.36', 'appid': '157pr4o', 'app_version': 1536174158, 'asn': 3301}


pd.DataFrame(line, index=[0])

也可以在索引列index=range(0,len(items))中使用range


lines = [{'protocol': 'https',
 'instanceid': 'beacond-lga13-1349-12003',
 'raw_data': 'i|200|122!i|200|114!i|200|117',
 'source_ip': '90.227.61.0',
 'ts': 1549434199,
 'jobid': '1uxw9ir',
 'geocode': 'SE',
 'referer': 'https://sv.cam4.com/female',
 'user_agent': 'Mozilla/5.0 (Linux; Android 8.0.0; SAMSUNG SM-G935F/G935FXXS3ERL4 Build/R16NW) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/8.2 Chrome/63.0.3239.111 Mobile Safari/537.36',
 'appid': '157pr4o',
 'app_version': 1536174158,
 'asn': 3301},
{'protocol': 'https',
 'instanceid': 'beacond-lga14-1349-12003',
 'raw_data': 'i|200|122!i|200|114!i|200|117',
 'source_ip': '90.227.61.1',
 'ts': 1549434199,
 'jobid': '1uxw9ir',
 'geocode': 'SE',
 'referer': 'https://sv.cam4.com/female',
 'user_agent': 'Mozilla/5.0 (Linux; Android 8.0.0; SAMSUNG SM-G935F/G935FXXS3ERL4 Build/R16NW) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/8.2 Chrome/63.0.3239.111 Mobile Safari/537.36',
 'appid': '157pr4o',
 'app_version': 1536174158,
 'asn': 3301}]

pd.DataFrame(lines, index=list(range(0, len(lines)))) 
输出:

Out[899]: 
  protocol                instanceid                       raw_data    source_ip          ts  ...                     referer                                         user_agent    appid app_version   asn
0    https  beacond-lga13-1349-12003  i|200|122!i|200|114!i|200|117  90.227.61.0  1549434199  ...  https://sv.cam4.com/female  Mozilla/5.0 (Linux; Android 8.0.0; SAMSUNG SM-...  157pr4o  1536174158  3301
1    https  beacond-lga14-1349-12003  i|200|122!i|200|114!i|200|117  90.227.61.1  1549434199  ...  https://sv.cam4.com/female  Mozilla/5.0 (Linux; Android 8.0.0; SAMSUNG SM-...  157pr4o  1536174158  3301

[2 rows x 12 columns]

如果我这样做,我可以在中阅读您的列表:

line = {'protocol': 'https', 'instanceid': 'beacond-lga13-1349-12003', 'raw_data': 'i|200|122!i|200|114!i|200|117', 'source_ip': '90.227.61.0', 'ts': 1549434199, 'jobid': '1uxw9ir', 'geocode': 'SE', 'referer': 'https://sv.cam4.com/female', 'user_agent': 'Mozilla/5.0 (Linux; Android 8.0.0; SAMSUNG SM-G935F/G935FXXS3ERL4 Build/R16NW) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/8.2 Chrome/63.0.3239.111 Mobile Safari/537.36', 'appid': '157pr4o', 'app_version': 1536174158, 'asn': 3301}


pd.DataFrame(line, index=[0])

也可以在索引列index=range(0,len(items))中使用range


lines = [{'protocol': 'https',
 'instanceid': 'beacond-lga13-1349-12003',
 'raw_data': 'i|200|122!i|200|114!i|200|117',
 'source_ip': '90.227.61.0',
 'ts': 1549434199,
 'jobid': '1uxw9ir',
 'geocode': 'SE',
 'referer': 'https://sv.cam4.com/female',
 'user_agent': 'Mozilla/5.0 (Linux; Android 8.0.0; SAMSUNG SM-G935F/G935FXXS3ERL4 Build/R16NW) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/8.2 Chrome/63.0.3239.111 Mobile Safari/537.36',
 'appid': '157pr4o',
 'app_version': 1536174158,
 'asn': 3301},
{'protocol': 'https',
 'instanceid': 'beacond-lga14-1349-12003',
 'raw_data': 'i|200|122!i|200|114!i|200|117',
 'source_ip': '90.227.61.1',
 'ts': 1549434199,
 'jobid': '1uxw9ir',
 'geocode': 'SE',
 'referer': 'https://sv.cam4.com/female',
 'user_agent': 'Mozilla/5.0 (Linux; Android 8.0.0; SAMSUNG SM-G935F/G935FXXS3ERL4 Build/R16NW) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/8.2 Chrome/63.0.3239.111 Mobile Safari/537.36',
 'appid': '157pr4o',
 'app_version': 1536174158,
 'asn': 3301}]

pd.DataFrame(lines, index=list(range(0, len(lines)))) 
输出:

Out[899]: 
  protocol                instanceid                       raw_data    source_ip          ts  ...                     referer                                         user_agent    appid app_version   asn
0    https  beacond-lga13-1349-12003  i|200|122!i|200|114!i|200|117  90.227.61.0  1549434199  ...  https://sv.cam4.com/female  Mozilla/5.0 (Linux; Android 8.0.0; SAMSUNG SM-...  157pr4o  1536174158  3301
1    https  beacond-lga14-1349-12003  i|200|122!i|200|114!i|200|117  90.227.61.1  1549434199  ...  https://sv.cam4.com/female  Mozilla/5.0 (Linux; Android 8.0.0; SAMSUNG SM-...  157pr4o  1536174158  3301

[2 rows x 12 columns]

我假设您在本例中讨论的是键和值。对于json中的每一行,您都得到了一个列表,对吗?我有一个方法可以将所有键和值写入一个列表,是的。太好了!因此,从您的示例来看,似乎您正在将每行的列表添加到
所有列表
,对吗?然后,您可以使用
all_list
创建一个带有
pd.dataframe(all_list)
的数据框架,本质上,
pd.dataframe(list of list)
将为您提供一个数据框架,因此首先创建列表列表,然后创建数据框架。我假设您正在讨论本例中的键和值。对于json中的每一行,你得到了一个列表,对吗?我有一个方法可以将所有的键和值写入一个列表,是的。好的,太好了!因此,从您的示例来看,似乎您正在将每行的列表添加到
所有列表
,对吗?然后,您可以使用
all\u list
创建一个带有
pd.dataframe(all\u list)
的数据框,基本上,
pd.dataframe(list of list)
将为您提供一个数据框,因此首先创建列表列表,然后您可以创建数据框