2016-05-20 42 views
0

私はPythonの初心者です。私はタプルのリストを持っています。リストの最初の要素に基づいてこれらのリストをグループ化したいと思います。また、繰り返し要素のリストの2番目と3番目の要素を合計したいと思います。Pythonのリストで同じ名前をグループ化する

サンプル入力:

[("henry", 10, 20), ("alex", 25, 40), ("henry", 13, 21)] 

出力例:

[("henry", 23, 41), ("alex", 25, 40)] 

私はpythonでGROUPBY方法を試してみましたが、それはソートされたリスト上でのみ動作します。

+0

あなたが使用する必要がある[itertools.groupby](https://docs.python.org/2/library/itertools.html#itertools.groupby) 。同様の種類の問題は、このStackOverflowの質問で 'itertools.groupby'を使って既に解決され解決されています: http://stackoverflow.com/questions/2249036/grouping-python-tuple-list既存の質問を探してください重複を投稿する前に似ている可能性があります。 –

+0

@ Md.AbdulMunim: 'groupby'は、入力をソートする必要があります。 –

答えて

4

IIUCはここpandasを使用してソリューションです:

lst = [['henry', 10, 20], ['henry', 23, 42], ['alex', 25, 40]] 
import pandas as pd 
#Create a dataframe using the list 
df = pd.DataFrame(lst) 
#Name the columns 
df.columns = ['name', 'val1', 'val2'] 
#Groupby name and sum it. 
df.groupby('name').sum() 
#Will produce this result 
     val1 val2 
name 
alex  25 40 
henry 33 62 

#To access the rows and columns following is the example 
dfg = df.groupby('name').sum() 
#Row, Column 
dfg.ix[0,0] 
#Will get 25 & likewise can get any other values 
25 
+0

こんにちはAbbas、このテーブルから特定の行と列にアクセスするにはどうすればいいですか?たとえば値25が必要な場合は、どうすれば入手できますか? –

+0

行と列にアクセスする方法を追加しました。 – Abbas

関連する問題