2017-07-18 3 views
1

私はこの短いデータのようなデータのリストをここに持っています。複数のリストの最初の要素を比較し、等しい場合は新しいリストに追加するにはどうすればよいですか?

[[743, 5043.0, 'N/A', 19.40393776, 7.18, 15.487], [744, 6117.0, 'N/A', 19.22138894, 49.29, 15.341], [745, 5152.0, 'N/A', 16.46983774, 7.94, 15.788], [746, 4856.0, 1.5936507936507938, 9.27358173, 2.47, 15.302], [747, 4537.0, 1.0317880794701988, 6.02930329, 2.85, 15.784], [748, 4989.0, 'N/A', 2.696370652, 1.58, 15.269], [749, 5185.0, 0.8675585284280938, 5.349553819, 2.55, 15.416], [749, 5185.0, 'N/A', 3.94105221, 1.7, 15.416], [749, 5185.0, 'N/A', 8.10904807, 1.3, 15.416]] 

私はリストのリストを持っています。最初の要素は、ケプラーオブジェクトの番号を表しています。最初の要素の順にリストを表示するようにデータをソートしました。私の目標は、最初の要素が一致するすべてのリストがリストにまとめられたリストのリストを作成することです。たとえば、749という3つのリストがあり、それらを一緒に1つのリストに入れる必要があります。私はすべてのリストを反復し、最初の要素を未知の量の他の最初の要素と比較するプログラムを作成するのに苦労しています。これを行う最も簡単な方法は何ですか?

目標:

[[[743, 5043.0, 'N/A', 19.40393776, 7.18, 15.487]], [[744, 6117.0, 'N/A', 19.22138894, 49.29, 15.341]], [[745, 5152.0, 'N/A', 16.46983774, 7.94, 15.788]], [[746, 4856.0, 1.5936507936507938, 9.27358173, 2.47, 15.302]], [[747, 4537.0, 1.0317880794701988, 6.02930329, 2.85, 15.784]], [[748, 4989.0, 'N/A', 2.696370652, 1.58, 15.269]], [[749, 5185.0, 0.8675585284280938, 5.349553819, 2.55, 15.416], [749, 5185.0, 'N/A', 3.94105221, 1.7, 15.416], [749, 5185.0, 'N/A', 8.10904807, 1.3, 15.416]]] 

答えて

0

私はパンダのデータフレームの中にリストのリストを変換使用して考えて行くには良い方法です:私はこれがフォーマット、およびグループ化されていると信じて

import pandas as pd 
x = pd.DataFrame([[743, 5043.0, 'N/A', 19.40393776, 7.18, 15.487], [744, 6117.0, 'N/A', 19.22138894, 49.29, 15.341], [745, 5152.0, 'N/A', 16.46983774, 7.94, 15.788], [746, 4856.0, 1.5936507936507938, 9.27358173, 2.47, 15.302], [747, 4537.0, 1.0317880794701988, 6.02930329, 2.85, 15.784], [748, 4989.0, 'N/A', 2.696370652, 1.58, 15.269], [749, 5185.0, 0.8675585284280938, 5.349553819, 2.55, 15.416], [749, 5185.0, 'N/A', 3.94105221, 1.7, 15.416], [749, 5185.0, 'N/A', 8.10904807, 1.3, 15.416]]) 
y = x.groupby(0).apply(lambda z: list(z.values)) 
Goal = [[list(z) for z in y[idx]] for idx in y.index] 

、あなたが描く方法。

+1

ありがとう、それは私に必要なものを正確に与えました。 –

0

Pythonで組み込みの機能を使用する場合は、辞書を使用できます。

from collections import OrderedDict 

l = [[743, 5043.0, 'N/A', 19.40393776, 7.18, 15.487], [744, 6117.0, 'N/A', 19.22138894, 49.29, 15.341], [745, 5152.0, 'N/A', 16.46983774, 7.94, 15.788], [746, 4856.0, 1.5936507936507938, 9.27358173, 2.47, 15.302], [747, 4537.0, 1.0317880794701988, 6.02930329, 2.85, 15.784], [748, 4989.0, 'N/A', 2.696370652, 1.58, 15.269], [749, 5185.0, 0.8675585284280938, 5.349553819, 2.55, 15.416], [749, 5185.0, 'N/A', 3.94105221, 1.7, 15.416], [749, 5185.0, 'N/A', 8.10904807, 1.3, 15.416]] 
d = OrderedDict() 
for inner in l: 
    if inner[0] in d: 
     d[inner[0]].append(inner) 
    else: 
     d[inner[0]] = [inner] 

list(d.values()) 

私はOrderedDictを使用して元のアイテムの順序を保持しました。

+0

ありがとう、それは知って良いです! –

関連する問題