python - 如何将没有字典的嵌套列表变成熊猫数据框?
问题描述
我从一个更大的嵌套字典创建了一个嵌套列表,现在想将该列表转换为数据框。我创建的列表没有键或值。
我尝试使用 dict() 将列表转换为字典,但这不起作用。该列表采用这种格式(名称和数据已更改为匿名)
['Bigclient', ['All Web Site Data', '129374116'], 'Otherclient', ['All Web Site Data', '164548948'], ['Filtered website data', '142386573'], ['Test ','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
这就是我建立我的列表的方式,但是它没有字典。
解决方案
干得好:
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
推荐阅读
- r - 在 R 中启用急切执行时,不支持关于 tf.gradients
- python - 从 Azure Databricks 中的日期列表输出创建 CSV
- spring - 周一每两周安排一次任务
- python-3.x - Python:模块未找到错误
- couchdb - 大查询/更新超时崩溃后,Fabric 无法恢复对等点
- python - 遍历 numpy 数组仅返回最后一项
- android-studio - 为什么我的模拟器显示在 android studio 空白处而不是应用程序和键盘中?
- gpgpu - 如何将动态大小的超大数组传递给 Metal Argument 缓冲区?
- bash - 将 /bin/bash 命令转换为 /bin/sh 命令
- python - 如何让 anonymizing_video_by_DSFD 运行