Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Pandas:数据帧中具有不同列的元组列表_Python_Json_Pandas_Dataframe_Tuples - Fatal编程技术网

Python Pandas:数据帧中具有不同列的元组列表

Python Pandas:数据帧中具有不同列的元组列表,python,json,pandas,dataframe,tuples,Python,Json,Pandas,Dataframe,Tuples,我从一个数据库中提取数据,该数据库是一个元组列表,但列表没有保证的格式。这些列表实际上由类似JSON的属性:参数组合组成: example_data = [('ID1', 12 ,['Name','Age','Job'], ['John','33','Driver']),('ID2',21, ['Name', 'Car'], ['Jane', 'Honda'])] 我想要的是一个填充字段但将未知字段保留为None或NaN的数据帧: example_DF = ID IX Name

我从一个数据库中提取数据,该数据库是一个元组列表,但列表没有保证的格式。这些列表实际上由类似JSON的属性:参数组合组成:

example_data = [('ID1', 12 ,['Name','Age','Job'], ['John','33','Driver']),('ID2',21, ['Name', 'Car'], ['Jane', 'Honda'])]
我想要的是一个填充字段但将未知字段保留为None或NaN的数据帧:

example_DF =
   ID    IX   Name   Age  Job    Car
0  ID1   12   John   33   Driver -
1  ID2   21   Jane   -    -      Honda
当前正在执行直接向上的pd.DataFrame(示例_数据)返回:


这是没有帮助的

你可以这样做

import pandas as pd

example_data = [('ID1', 12 ,['Name','Age','Job'], ['John','33','Driver']),('ID2',21, ['Name', 'Car'], ['Jane', 'Honda'])]

l = []
for example in example_data:
    d = dict()
    d['id'] = example[0]
    d['row'] = example[1]
    for key, attribute in zip(example[2], example[3]):
        d[key] = attribute
    l.append(d)


df = pd.DataFrame(l)
print(df)

   Age    Car     Job  Name   id  row
0   33    NaN  Driver  John  ID1   12
1  NaN  Honda     NaN  Jane  ID2   21

如果元组的格式是一致的,它就可以工作。您还可以检查说明和值列表是否具有相同的长度。

您可以这样做

import pandas as pd

example_data = [('ID1', 12 ,['Name','Age','Job'], ['John','33','Driver']),('ID2',21, ['Name', 'Car'], ['Jane', 'Honda'])]

l = []
for example in example_data:
    d = dict()
    d['id'] = example[0]
    d['row'] = example[1]
    for key, attribute in zip(example[2], example[3]):
        d[key] = attribute
    l.append(d)


df = pd.DataFrame(l)
print(df)

   Age    Car     Job  Name   id  row
0   33    NaN  Driver  John  ID1   12
1  NaN  Honda     NaN  Jane  ID2   21
如果元组的格式是一致的,它就可以工作。您还可以检查说明和值列表是否具有相同的长度。

您可以这样做

import pandas as pd

example_data = [('ID1', 12, ['Name', 'Age', 'Job'], ['John', '33', 'Driver']), ('ID2', 21, ['Name', 'Car'], ['Jane', 'Honda'])]

def change_dataframe():
    temp_list = []
    for data in example_data:
        temp_dict = {'ID': data[0], 'IX': data[1]}
        temp_dict.update(dict(zip(data[2], data[3])))
        temp_list.append(temp_dict)
    return pd.DataFrame.from_dict(temp_list)

change_dataframe()
你可以这样做

import pandas as pd

example_data = [('ID1', 12, ['Name', 'Age', 'Job'], ['John', '33', 'Driver']), ('ID2', 21, ['Name', 'Car'], ['Jane', 'Honda'])]

def change_dataframe():
    temp_list = []
    for data in example_data:
        temp_dict = {'ID': data[0], 'IX': data[1]}
        temp_dict.update(dict(zip(data[2], data[3])))
        temp_list.append(temp_dict)
    return pd.DataFrame.from_dict(temp_list)

change_dataframe()

是的,它起作用了。元组是一致的;只是JSON'y位不是。谢谢你,它起作用了。元组是一致的;只是JSON'y位不是。谢谢