Python 创建一个列表,该列表表示个人可以选择的所有可能路径
以下数据框表示一组个人的假定居住地:Python 创建一个列表,该列表表示个人可以选择的所有可能路径,python,pandas,Python,Pandas,以下数据框表示一组个人的假定居住地: import pandas as pd df = pd.DataFrame({'PRESUMED_RESIDENCE':['SJDR1', 'LD1', 'LD2', 'TR1', 'TR2', 'SVM']}) df 我需要创建一个列表,其中包含个人可以采取的所有可能的轨迹-这里我将这些轨迹称为主题-。以下是我预期最终结果的列表示例: MOTIFS = [[SJDR1],[LD1],[LD2], [TR1], [TR2], [SVM], [SJDR1,
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]
有了这个列表和完整的数据框架,我可以找到个人的移动模式,看看哪些轨迹是最重复的。但是,我不知道如何生成此列表。有人能帮忙吗?使用
更多工具。powerset
将生成元组列表,因此使用map()
检查ITERTOLSIF子列表中的顺序无关紧要这不是列表中非空子集的列表吗?如果是这样的话,有一些解决方案,例如使用itertools.compositions的解决方案。也许您正在寻找
itertools.compositions(['SJDR1','LD1','LD2','TR1','TR2','SVM'],组合数)
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']]