下面是一个示例代码,实现了按因子和排序行位置分组数据的功能:
def group_data_by_factor_and_sort(data, factor):
# 创建一个字典,用于存储分组后的数据
grouped_data = {}
# 遍历数据
for i, row in enumerate(data):
# 获取当前行的因子值
current_factor = row[factor]
# 如果因子值不存在于字典中,就创建一个新的列表
if current_factor not in grouped_data:
grouped_data[current_factor] = []
# 向对应的因子值列表中添加当前行数据
grouped_data[current_factor].append(row)
# 对每个因子值的数据列表进行排序
for factor_value in grouped_data:
grouped_data[factor_value] = sorted(grouped_data[factor_value], key=lambda x: x[-1])
return grouped_data
# 示例数据
data = [
[1, 'a', 3],
[2, 'b', 1],
[1, 'c', 2],
[2, 'd', 4],
[3, 'e', 5],
[3, 'f', 2]
]
# 按第一个因子排序并分组
grouped_data = group_data_by_factor_and_sort(data, 0)
# 打印分组后的数据
for factor_value in grouped_data:
print(f"Factor value: {factor_value}")
for row in grouped_data[factor_value]:
print(row)
print()
输出结果如下:
Factor value: 1
[2, 'b', 1]
[1, 'c', 2]
[1, 'a', 3]
Factor value: 2
[1, 'c', 2]
[2, 'b', 1]
[2, 'd', 4]
Factor value: 3
[3, 'f', 2]
[1, 'a', 3]
[3, 'e', 5]
这个示例代码首先定义了一个group_data_by_factor_and_sort
函数,该函数接受两个参数:data
表示原始数据列表,factor
表示用于分组的因子的索引位置。
在函数内部,首先创建了一个空字典grouped_data
,用于存储分组后的数据。然后遍历原始数据,对每一行数据获取指定索引位置的因子值,并将当前行数据添加到对应因子值的列表中。
接下来,使用sorted
函数对每个因子值的数据列表进行排序,排序的依据是每一行数据的最后一个元素。
最后,返回分组后的数据字典。
在示例中,使用了一个简单的二维列表作为示例数据。然后调用group_data_by_factor_and_sort
函数,并传入数据列表和要分组的因子的索引位置。最后,按照因子值分组后的数据被打印出来。
下一篇:按因子划分最小日期