在python中的列表中对相同的名称进行分组

时间:2016-05-20 06:43:21

标签: python list python-2.7

我是python的新手,所以希望你能帮忙解决这个问题。我有一个元组列表。我想根据列表的第一个元素对这些列表进行分组,这可能会重复。另外,我想将重复元素列表的第2和第3个元素相加。

示例输入:

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

示例输出:

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

我在python中尝试了groupby方法,但它仅适用于排序列表。

1 个答案:

答案 0 :(得分: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