我已经从一个更大的嵌套字典创建了一个嵌套列表,现在想将该列表转换为数据框。我创建的列表没有键或值。
我试图使用dict()将列表转换成字典,但这不起作用。 列表采用这种格式(名称和数据因匿名而更改)
['Bigclient',['All Web Site Data','129374116'], 'Otherclient',['所有网站数据','164548948'],['过滤的网站数据','142386573'],['测试','72551604']。
所以我有一个父值“ Bigclient”,然后有一个子列表,其中包括数据名称和对应于该名称的ID号。每个父值具有不同数量的子对。我想制作一个具有像这样的列的数据框
Client_name dataname ID
BigClient All Web 129374116
Other Client All web 164548948
Other Client Filtered 142386573
Other Client Test 7255160
因此,客户端名称(父值)用于对数据名称和ID进行分组
new =[]
for item in data['items']:
name = item.get('name')
if name:
new.append(name)
webprop = item.get('webProperties')
if webprop:
for profile in webprop:
profile = profile.get('profiles')
if profile:
for idname in profile:
idname = idname.get('name')
for idname1 in profile:
idname1 = idname1.get('id')
if idname:
result = [idname, idname1]
new.append(result)
else:
continue
else:
continue
这是我如何建立我的列表的方法,但是它没有字典。
答案 0 :(得分:0)
您在这里:
import pandas as pd
raw_data = ['Bigclient', ['All Web Site Data', '129374116'], 'Otherclient', ['All Web Site Data', '164548948'], ['Filtered website data', '142386573'], ['Test', '72551604']]
# collect dsata
keys_list = []
values_list = [[] for _ in range(2)]
count = -1
for item in raw_data:
if isinstance(item, str):
keys_list.append(item)
count += 1
else:
values_list[count].append(item)
# create data dictionary
data_dict = dict(zip(keys_list, values_list))
# create data frame
raw_df = pd.DataFrame(columns=['Client_name', 'data'])
for key, values in data_dict.items():
for value in values:
raw_df = raw_df.append({'Client_name': key, 'data': value}, ignore_index=True)
# split list data into 2 columns
spilt_data = pd.DataFrame(raw_df['data'].values.tolist(), columns=['dataname','ID'])
# concat data
result = pd.concat([raw_df, spilt_data], axis=1, sort=False)
# drop used column
result = result.drop(['data'], axis=1)
输出:
Client_name dataname ID
0 Bigclient All Web Site Data 129374116
1 Otherclient All Web Site Data 164548948
2 Otherclient Filtered website data 142386573
3 Otherclient Test 72551604