创建一个列表,该列表表示个人可以选择的所有可能路径

2024-10-06 16:23:54 发布

您现在位置:Python中文网/ 问答频道 /正文

以下数据框表示一组个人的假定居住地:

import pandas as pd

df = pd.DataFrame({'PRESUMED_RESIDENCE':['SJDR1', 'LD1', 'LD2', 'TR1', 'TR2', 'SVM']})
df

我需要创建一个列表,其中包含个人可以采取的所有可能的轨迹-这里我将这些轨迹称为主题-。以下是我预期最终结果的列表示例:

MOTIFS = [[SJDR1],[LD1],[LD2], [TR1], [TR2], [SVM], [SJDR1,LD1], [SJDR1,LD2], [SJDR1,TR1],
[SJDR1,TR2], [SJDR1,SVM], [SJDR1, TR1, TR2].....[SJDR1,LD1,LD2,TR1,TR2,SVM]

有了这个列表和完整的数据框架,我可以找到个人的移动模式,看看哪些轨迹是最重复的。但是,我不知道如何生成此列表。有人能帮忙吗


Tags: 数据importpandasdf列表轨迹aspd
1条回答
网友
1楼 · 发布于 2024-10-06 16:23:54

使用more_itertools.powerset将生成元组列表,因此使用map()将其转换为列表列表

import more_itertools
vals = df["PRESUMED_RESIDENCE"].to_list()
out = list(more_itertools.powerset(vals))[1:]
MOTIFS = list(map(list, out))
print(MOTIFS)

>> [['SJDR1'],
 ['LD1'],
 ['LD2'],
 ['TR1'],
 ['TR2'],
 ['SVM'],
 ['SJDR1', 'LD1'],
 ['SJDR1', 'LD2'],
 ['SJDR1', 'TR1'],
 ['SJDR1', 'TR2'],
 ['SJDR1', 'SVM'],
 ['LD1', 'LD2'],
 ['LD1', 'TR1'],
 ['LD1', 'TR2'],
 ['LD1', 'SVM'],
 ['LD2', 'TR1'],
 ['LD2', 'TR2'],
 ['LD2', 'SVM'],
 ['TR1', 'TR2'],
 ['TR1', 'SVM'],
 ['TR2', 'SVM'],
 ['SJDR1', 'LD1', 'LD2'],
 ['SJDR1', 'LD1', 'TR1'],
 ['SJDR1', 'LD1', 'TR2'],
 ['SJDR1', 'LD1', 'SVM'],
 ['SJDR1', 'LD2', 'TR1'],
 ['SJDR1', 'LD2', 'TR2'],
 ['SJDR1', 'LD2', 'SVM'],
 ['SJDR1', 'TR1', 'TR2'],
 ['SJDR1', 'TR1', 'SVM'],
 ['SJDR1', 'TR2', 'SVM'],
 ['LD1', 'LD2', 'TR1'],
 ['LD1', 'LD2', 'TR2'],
 ['LD1', 'LD2', 'SVM'],
 ['LD1', 'TR1', 'TR2'],
 ['LD1', 'TR1', 'SVM'],
 ['LD1', 'TR2', 'SVM'],
 ['LD2', 'TR1', 'TR2'],
 ['LD2', 'TR1', 'SVM'],
 ['LD2', 'TR2', 'SVM'],
 ['TR1', 'TR2', 'SVM'],
 ['SJDR1', 'LD1', 'LD2', 'TR1'],
 ['SJDR1', 'LD1', 'LD2', 'TR2'],
 ['SJDR1', 'LD1', 'LD2', 'SVM'],
 ['SJDR1', 'LD1', 'TR1', 'TR2'],
 ['SJDR1', 'LD1', 'TR1', 'SVM'],
 ['SJDR1', 'LD1', 'TR2', 'SVM'],
 ['SJDR1', 'LD2', 'TR1', 'TR2'],
 ['SJDR1', 'LD2', 'TR1', 'SVM'],
 ['SJDR1', 'LD2', 'TR2', 'SVM'],
 ['SJDR1', 'TR1', 'TR2', 'SVM'],
 ['LD1', 'LD2', 'TR1', 'TR2'],
 ['LD1', 'LD2', 'TR1', 'SVM'],
 ['LD1', 'LD2', 'TR2', 'SVM'],
 ['LD1', 'TR1', 'TR2', 'SVM'],
 ['LD2', 'TR1', 'TR2', 'SVM'],
 ['SJDR1', 'LD1', 'LD2', 'TR1', 'TR2'],
 ['SJDR1', 'LD1', 'LD2', 'TR1', 'SVM'],
 ['SJDR1', 'LD1', 'LD2', 'TR2', 'SVM'],
 ['SJDR1', 'LD1', 'TR1', 'TR2', 'SVM'],
 ['SJDR1', 'LD2', 'TR1', 'TR2', 'SVM'],
 ['LD1', 'LD2', 'TR1', 'TR2', 'SVM'],
 ['SJDR1', 'LD1', 'LD2', 'TR1', 'TR2', 'SVM']]

相关问题 更多 >