2017-04-05 7 views
0

私はいくつかの辞書のリストを持っており、それらをデータフレームに変換したいのです。私はまずupdateを使って辞書のリストを辞書の辞書に変換した後、pd.concatを使って各辞書を連結しました。辞書のリストをマージしてPythonの複数のデータフレームに変換するには?

病院IDでデータをグループ化し、各リストには2つの辞書があります。各辞書の中で、「patientID」、および「結果」が

# Hospital35006 Adults Test results 
diabetes_35006 = 
[{'hospital': [35006, 35006], 'patientID': [0001, 0002], 'results': [0,1]}] #Adult Patients(18-25yrs) 
[{'hospital': [35006, 35006], 'patientID': [0003, 0004], 'results': [1,0]}] #Adult Patients(25-30yrs) 


# Hospital35007 Adults Test results 
diabetes_35007 = 
[{'hospital': [35007, 35007], 'patientID': [0001, 0002], 'results': [0,1]}] #Adult Patients(18-25yrs) 
[{'hospital': [35007, 35007], 'patientID': [0003, 0004], 'results': [1,0]}] #Adult Patients(25-30yrs) 


def resultDF(test_results): 
    adults_test_results = {} 
    for results in test_results: 
     adults_test_results.update(results) #Concatenate two adults test results in diabetes_35006 & diabetes_35007 
    dataframe = pd.concat(adults_test_results, ignore_index = True) 
    return dataframe 

hospital_35006 = resultDF(diabetes_35006) 
hospital_35007 = resultDF(diabetes_35007) 

私はまた、別の10件の病院からのテスト結果を持っているので、私は追加することができるものがある列「病院」とのデータフレームがあります毎回hosiptal_35006 = resultDF(diabetes_35006) ...などと書くのではなく、データフレームをより効率的に生成するために私のコードに?

答えて

0

ディクショナリの辞書(「糖尿病」)を持って辞書の理解を使ってデータフレームの辞書(病院)に変換するのがベストプラクティスだと思います。

このリンクは、文字列に基づいて動的に生成する変数の誘惑を避けるために役立つことができます:http://stupidpythonideas.blogspot.co.uk/2013/05/why-you-dont-want-to-dynamically-create.html

私はあなたが持っている正しい入力が(辞書のリスト)であると仮定します。

# Hospital35006 Adults Test results 
diabetes_35006 =\ 
[{'hospital': [35006, 35006], 'patientID': [0001, 0002], 'results': [0,1]},\ 
#Adult Patients(18-25yrs)\ 
{'hospital': [35006, 35006], 'patientID': [0003, 0004], 'results': [1,0]}] 
#Adult Patients(25-30yrs) 


# Hospital35007 Adults Test results 
diabetes_35007 = \ 
[{'hospital': [35007, 35007], 'patientID': [0001, 0002], 'results': [0,1]},\ 
#Adult Patients(18-25yrs) 
{'hospital': [35007, 35007], 'patientID': [0003, 0004], 'results': [1,0]}] 
#Adult Patients(25-30yrs) 

は(?)まず、データフレームに辞書のリストを変換するためにあなたの機能を簡素化することができます。

def resultDF(test_results): 
    return pd.concat([pd.DataFrame(res) for res in test_results]).reset_index(drop = True) 

その後、私は示唆していますがグループにすべての結果であります辞書にと一度にDFにすべてのそれらを変換:あなたが持っているようにするため

test_dict = {35006 : diabetes_35006, 
      35007 : diabetes_35007} 

res_dict = {key: resultDF(el) for key, el in test_dict.iteritems()} 

res_dict[35006] 
Out[64]: 
    hospital patientID results 
0  35006   1  0 
1  35006   2  1 
2  35006   3  1 
3  35006   4  0 

と:情報について

hospital patientID results 
0  35007   1  0 
1  35007   2  1 
2  35007   3  1 
3  35007   4  0 
+0

おかげで、ぜい肉を。私はポストにいくつかのデータ情報を追加しました。 – Peggy

+0

あなたの例を見直したいでしょうか?あなたは同じ名前の2つの別々のリストを持っています(例えば、糖尿病の35006 ...) – FLab

+0

指摘してくれてありがとう。私は投稿を編集しました。 – Peggy

関連する問題