gpt4 book ai didi

python - 在 Python 中使用 Groupby 对访问表中的列进行分组

转载 作者:太空宇宙 更新时间:2023-11-04 01:38:11 25 4
gpt4 key购买 nike

我已经使用 itertools 模块中的 groupby 函数有一段时间了(比如几天)

for k, g in groupby(data, keyfunc):

我真的很难理解语法。我尝试了各种不同的方法,但我真的不知道要为“data”和“keyfunc”输入什么,并让它在打印语句中返回我想要的数据组。

我正在做的是循环访问访问表中的行。

我在访问表中将一个变量设置为游标搜索(已排序)并拉出我想要的列。

for row in cursor:
print row.ROAD_TYPE

返回:

TRUNK ROAD
TRUNK ROAD
TRUNK ROAD
TRUNK ROAD
COLLECTOR HIGHWAY
COLLECTOR HIGHWAY
ACCESS ROAD
ACCESS ROAD
ACCESS ROAD
ACCESS ROAD
ACCESS ROAD
ACCESS ROAD
ACCESS ROAD
MAJOR ROAD
MAJOR HIGHWAY

我想将这些值组合在一起并让它为我返回字符串值,因此它会打印如下内容:

TRUNK ROAD
TRUNK ROAD
TRUNK ROAD
TRUNK ROAD

COLLECTOR HIGHWAY
COLLECTOR HIGHWAY

ACCESS ROAD
ACCESS ROAD
ACCESS ROAD
ACCESS ROAD
ACCESS ROAD
ACCESS ROAD
ACCESS ROAD

MAJOR ROAD

MAJOR HIGHWAY

最后,我想根据这些新组对第二列进行分组,以便得到如下内容:

TRUNK ROAD  M1
TRUNK ROAD M1

TRUNK ROAD M2

TRUNK ROAD M3


COLLECTOR HIGHWAY M1

COLLECTOR HIGHWAY M2


ACCESS ROAD M1
ACCESS ROAD M1

ACCESS ROAD M3
ACCESS ROAD M3

ACCESS ROAD M7
ACCESS ROAD M7

ACCESS ROAD M8


MAJOR ROAD M8


MAJOR HIGHWAY M8

我知道这可能比我自己做的要简单得多,我觉得有一个简单的答案,但我完全被难住了,我似乎无法在互联网上找到一个例子来解释以我理解的方式使用 groupby 语法。请感觉f

最佳答案

import itertools as it
for key, group in it.groupby(cursor, lambda row: row.ROAD_TYPE):
for sec_col,pairs in it.groupby(group, lambda row: row.SECOND_COLUMN):
for row in pairs:
print('{t} {s}'.format(t=row.ROAD_TYPE,s=row.SECOND_COLUMN))
print
print

这里有两个例子可以帮助 grok groupby :

[list(g) for k, g in it.groupby('AAAABBBCCD')]
# [['A', 'A', 'A', 'A'], ['B', 'B', 'B'], ['C', 'C'], ['D']]

上面,所有相同的项目被组合在一起。

现在我们添加一个按键函数,keyfunc:

keyfunc=lambda x: x//3
data=range(13)
[list(g) for k,g in it.groupby(data,keyfunc)]
# [[0, 1, 2], [3, 4, 5], [6, 7, 8], [9, 10, 11], [12]]
[k for k,g in it.groupby(data,keyfunc)]
# [0, 1, 2, 3, 4]

现在我们不再按数据中的项目分组,而是根据 keyfunc(x)data 中的每个 x 进行分组。

关于python - 在 Python 中使用 Groupby 对访问表中的列进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7744220/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com