2016-12-21 21 views
0

タプルのリストであるデータベースからデータを取得しましたが、リストには保証されたフォーマットがありません。パラメータコンボ:リストは、実際の属性のようなJSONで構成されている現在行ってパンダ:データフレームと異なる列を持つタプルのリスト

example_DF = 
    ID IX Name Age Job Car 
0 ID1 12 John 33 Driver - 
1 ID2 21 Jane - -  Honda 

:私は何をしたいことは、フィールドを移入したがなしませんまたはNaNのよう未知のフィールドを離れたデータフレームである

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

まっすぐにpd.DataFrame(example_data)が返されます:

 0 1     2     3 
0 ID1 12 [Name, Age, Job] [John, 33, Driver] 
1 ID2 21  [Name, Car]  [Jane, Honda] 

これは役に立ちません。

答えて

1

あなたは形式ならばそれが動作する

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 

ような何かを行うことができます - タプルが一致しています。説明と値のリストが同じ長さであることを確認することもできます。

+0

のように行うことができ、それが動作します。タプルは一貫しています。 JSONのビットだけではありません。ありがとう – RedM

2

あなたはうんこの

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() 
関連する問題