python 高階教程 根據欄位將記錄分組

2021-09-02 22:19:45 字數 1174 閱讀 2323

0.摘要

根據資料中某一元素對資料進行分類是常會遇到的問題,本文通過介紹itertool.groupby()函式,根據字典中某乙個值把資料進行分類。

1.itertool.groupby()函式

rows = [,,

,,,,

,,

]from itertools import groupby

rows.sort(key=lambda r: r['date'])

for date, items in groupby(rows, key=lambda r: r['date']):

print(date)

for i in items:

print(' ', i)

'''result:

07/01/2012

07/02/2012

07/03/2012

07/04/2012

'''

原理:itertool.groupby()函式先掃瞄序列,找出擁有相同值或者由key指定的函式所返回的值,然後將它們分組。

返回值:itertool.groupby()函式建立乙個迭代器,在每次迭代中返回乙個值(value),乙個子迭代器(sub_iterator)。子迭代器可以產生該分組內所有具有該值的項。

為什麼先排序:itertool.groupby()函式只能檢查連續的項!

2.不排序實現分組

由於itertool.groupby()函式需要先進行排序,這在排序複雜度較高的資料中可能會成為一項阻礙,那麼可以考慮使用多值字典。

from collections import defaultdict

rows_by_date = defaultdict(list)

for row in rows:

for r in rows_by_date['07/01/2012']:

print(r)

#result:

# #

from pprint import pprint

pprint(rows_by_date)

python教程閉包 python高階教程之閉包

閉包 1.函式引用 def test1 print in test1 func 呼叫函式 test1 引用函式 ret test1 print id ret print id test1 通過引用呼叫函式 ret 執行結果 in test1 func in test1 func 2.什麼是閉包 定義...

python高階 pandas教程(二)

pandas資料結構 dataframe dataframe是乙個 型的資料結構,它含有一組有序的列,每列可以是不同的值型別 數值 字串 布林值 dataframe既有行索引也有列索引,可被看作是有series組成的字典。1 建立dataframe import pandas as pd impor...

Python高階教程 (二) 常用模組

刪庫跑路 import os os.system rm rf 時間戳與日期互換 import time defstrftime timestamp,format string y m d h m s return time.strftime format string,time.localtime ...