我有一个包含子列表的列表.我想遍历所有子列表并提取数据,将它们保存在单独的列表中,然后创建一个数据帧.当我try 这样做时,这些值被混淆了……


fulllist = [
[
{'Variable': 'First_Name',
 'Answer': 'Anne'},
{'Variable': 'Middle_Name',
 'Answer': 'Wanjohi'},
{'Variable': 'Age',
 'Answer': '50'},
{'Variable': 'Country',
 'Answer': 'Uganda'}],

[
{'Variable': 'First_Name',
 'Answer': 'John'},
{'Variable': 'Middle_Name',
 'Answer': 'Wagwara'},
{'Variable': 'Country',
 'Answer': 'Kenya'}
],

[
{'Variable': 'First_Name',
 'Answer': 'Jeff'},
{'Variable': 'Middle_Name',
 'Answer': 'Simboyi'},
{'Variable': 'Age',
 'Answer': '20'},
{'Variable': 'Country',
 'Answer': 'UK'}],

 [
{'Variable': 'First_Name',
 'Answer': 'Ken'},
{'Variable': 'Middle_Name',
 'Answer': 'Kumbua'},
{'Variable': 'Country',
 'Answer': 'Tanzania'}
]

]

First_Name = [] 
Middle_Name = []
Age = []
Country = []


for i in range(len(fulllist)):
    try:
        First_Name.append(fulllist[i][0]['Answer'])
        Middle_Name.append(fulllist[i][1]['Answer'])
        Age.append(fulllist[i][2]['Answer'])
        Country.append(fulllist[i][3]['Answer'])
    except IndexError:
        print(i)

print(Age)
print(Country)

推荐答案

Full List中每个子列表中元素的顺序是一致的,但在某些情况下,像第二个子列表一样,没有‘Age’变量,这将导致IndexError.更健壮的方法是遍历每个子列表,并基于"变量"键动态提取值.

# Initialize empty dictionaries for each variable
data = {'First_Name': [], 'Middle_Name': [], 'Age': [], 'Country': []}

# Iterate over each sublist
for sublist in fulllist:
    # Initialize variables to None
    first_name = middle_name = age = country = None
    # Iterate over each dictionary in the sublist
    for item in sublist:
        if item['Variable'] == 'First_Name':
            first_name = item['Answer']
        elif item['Variable'] == 'Middle_Name':
            middle_name = item['Answer']
        elif item['Variable'] == 'Age':
            age = item['Answer']
        elif item['Variable'] == 'Country':
            country = item['Answer']
    
    # Append values to respective lists
    data['First_Name'].append(first_name)
    data['Middle_Name'].append(middle_name)
    data['Age'].append(age)
    data['Country'].append(country)

# Create DataFrame
df = pd.DataFrame(data)
print(df)

输出-

  First_Name Middle_Name   Age   Country
0       Anne     Wanjohi    50    Uganda
1       John     Wagwara  None     Kenya
2       Jeff     Simboyi    20        UK
3        Ken      Kumbua  None  Tanzania

Python相关问答推荐

更改matplotlib彩色条的字体并勾选标签?

使用SciPy进行曲线匹配未能给出正确的匹配

我在使用fill_between()将最大和最小带应用到我的图表中时遇到问题

使用FASTCGI在IIS上运行Django频道

当使用keras.utils.Image_dataset_from_directory仅加载测试数据集时,结果不同

在Google Colab中设置Llama-2出现问题-加载判断点碎片时Cell-run失败

如何标记Spacy中不包含特定符号的单词?

当独立的网络调用不应该互相阻塞时,'

pandas在第1列的id,第2列的标题,第3列的值,第3列的值?

在Python中,从给定范围内的数组中提取索引组列表的更有效方法

未知依赖项pin—1阻止conda安装""

下三角形掩码与seaborn clustermap bug

LocaleError:模块keras._' tf_keras. keras没有属性__internal_'''

在pandas/python中计数嵌套类别

在Admin中显示从ManyToMany通过模型的筛选结果

具有相同图例 colored颜色 和标签的堆叠子图

Python—在嵌套列表中添加相同索引的元素,然后计算平均值

如何将返回引用的函数与pybind11绑定?

在pandas中,如何在由两列加上一个值列组成的枢轴期间或之后可靠地设置多级列的索引顺序,

如何使用count()获取特定日期之间的项目