2016-11-16 4 views
2

私は3つの列を含むデータセットで作業しています。 roadType(文字列)、自動車とバス(整数値)。pythonを使用して行の値をグループ化することによって、複数の列で最高の値を見つける方法は?

data = [["A", 5, 6], ["B", 7, 3], ["C", 9, 6], ["B", 2, 8], ["A", 4, 8], ["C", 8, 1], ["B", 1, 0]] 

今、私は最初の列のタイプに基づいてグループ行のデータにしたいし、これらのグループから、私は列の両方から最高値を見つけたいです。出力期待値すなわち は

output = [["A", 5, 8], ["B", 7, 8], ["C", 9, 6]] 

のようなものがどのようにPythonのデータ解析ライブラリパンダや他のライブラリを使用して可能であるのですか?

答えて

1

はこれを試してみてください。

In [31]: d = pd.DataFrame(data, columns=['roadType','cars','buses']) 

In [32]: d 
Out[32]: 
    roadType cars buses 
0  A  5  6 
1  B  7  3 
2  C  9  6 
3  B  2  8 
4  A  4  8 
5  C  8  1 
6  B  1  0 

In [33]: d.groupby('roadType').max().reset_index() 
Out[33]: 
    roadType cars buses 
0  A  5  8 
1  B  7  8 
2  C  9  6 
+0

これはパンダを使用していると仮定しますか? – c3st7n

+0

@ChrisTomlinson、確かに! – MaxU

0

が...このコードを試してみてください構文のための私を許し、私はこの1つ私の電話XDをしました。

#pre condition, all integers are greater than zero 
function findMax(tag, list) 
    Max1 = 0 
    Max2 = 0 

    for item in list: 
     if item[0] == tag: 
      if item[1] > Max1: 
       Max1 = item[1] 
      if item[2] > Max2: 
       Max2 = item2 
    return [tag, Max1, Max2] 


outputList = [] #your output List 
data = data = [["A", 5, 6], ["B", 7, 3], ["C", 9, 6], ["B", 2, 8], ["A", 4, 8], ["C", 8, 1], ["B", 1, 0]] #your data list 
for item in ["A", "B", "C"...] 
    outputList.append(findMax(item, data)) 
関連する問題