Python Pandas:数据帧中具有不同列的元组列表
我从一个数据库中提取数据,该数据库是一个元组列表,但列表没有保证的格式。这些列表实际上由类似JSON的属性:参数组合组成: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
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位不是。谢谢