![](/img/trans.png)
[英]Match the second unique item to the first item which is repetive in a Python list
[英]Python List - group by first item, count and sum second item
我有一個列表,如這個稱為數據
[(4.0, 7.8, u'MNR'),
(1.0, 6.4, u'MNR'),
(9.0, 25.2, u'MNR'),
(8.0, 5.8, u'MNR'),
(7.0, 177.8, u'MNR'),
(4.0, 10.0, u'MNR'),
(2.0, 5.6, u'MNR'),
(2.0, 29.6, u'MNR'),
(1.0, 7.4, u'MNR'),
(2.0, 2.8, u'MNR'),
(8.0, 3.0, u'MNR'),
(2.0, 8.4, u'MNR'),
(3.0, 4.2, u'MNR'),
(2.0, 11.8, u'MNR')]
pd.Index(data)
MultiIndex(levels=[[1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0],
我知道如何以這種方式獲取數據:
data[0][0]
4.0
我想迭代列表並計算第一行中每個級別的出現次數。 輸出應該是這樣的,第二列代表計數:
1.0 - 2
2.0 - 4
3.0 - 1
然后我想得到第二列的總和:
1.0 - 13.8
2.0 - 58.2
3.0 - 4.2
然后平均
1.0 6.9
2.0 14.55
3.0 4.2
我嘗試用循環做這個,我嘗試使用zip認為如果我可以將單個列表的前兩部分中的每一部分壓縮成一個列表,我就可以輕松地對這些列表執行操作:
for index, item in enumerate(data):
item.count(data[0][0])
zip(data[-3])
既然你正在使用pd
和MultiIndex
,我會假設這真的是一個pandas
問題。 您可以使用groupby
和agg
在一個步驟( groupby教程 )中執行此操作,而無需逐個迭代:
>>> df = pd.DataFrame(data)
>>> df.groupby(0)[1].agg(["count", "sum", "mean"])
count sum mean
0
1 2 13.8 6.90
2 5 58.2 11.64
3 1 4.2 4.20
4 2 17.8 8.90
7 1 177.8 177.80
8 2 8.8 4.40
9 1 25.2 25.20
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.