在Python中,如何尝试数据帧的所有可能组合,但保持行项目的顺序?
正如标题所示,我必须维护行项目的顺序,因此,来自itertools的“组合”实际上没有帮助 这意味着,如果你仔细想想的话,我们必须改变列中项目之间的空间,以使不同的组合不会改变顺序。 例如: 由此:在Python中,如何尝试数据帧的所有可能组合,但保持行项目的顺序?,python,python-3.x,dataframe,combinations,itertools,Python,Python 3.x,Dataframe,Combinations,Itertools,正如标题所示,我必须维护行项目的顺序,因此,来自itertools的“组合”实际上没有帮助 这意味着,如果你仔细想想的话,我们必须改变列中项目之间的空间,以使不同的组合不会改变顺序。 例如: 由此: 周一周二周三周四。。。 0面包巧克力酒巧克力。。。 一份披萨面包巧克力。。。 2个面包披萨面包苹果。。。 3葡萄酒面包苹果酒。。。 我想尝试这个数据帧的所有可能组合,改变一个和另一个项目的距离,当然,最大值,否则它只会在这两者之间添加无限的空间 MON TUE
周一周二周三周四。。。
0面包巧克力酒巧克力。。。
一份披萨面包巧克力。。。
2个面包披萨面包苹果。。。
3葡萄酒面包苹果酒。。。
我想尝试这个数据帧的所有可能组合,改变一个和另一个项目的距离,当然,最大值,否则它只会在这两者之间添加无限的空间
MON TUE WED THU FRI SAT SUN ...
0 bread NaN chocolate NaN NaN wine NaN ...
1 NaN pizza bread bread NaN chocolate NaN ...
2 bread NaN pizza bread NaN NaN apple ...
3 NaN NaN wine bread apple wine NaN ...
所以在这个输出示例中,在行项目之间插入了空格,很可能是“for”之类的,在它们之间尝试不同数量的空格,但这就是我要搜索的;就是找不出正确的算法
有什么帮助吗?D:事先谢谢你,如果我错过了一些非常愚蠢的事情,我很抱歉:C.我不确定我是否清楚你想做什么,但我想可能就是这个
# setup mock dataframe
meals_df = pd.DataFrame([
{"MON": "bread", "TUE": "chocolate", "WED": "wine", "THU": "chocolate"},
{"MON": "pizza", "TUE": "bread", "WED": "bread", "THU": "chocolate"},
{"MON": "bread", "TUE": "pizza", "WED": "apple", "THU": "apple"},
{"MON": "wine", "TUE": "bread", "WED": "apple", "THU": "wine"}
])
days = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat']
menus = list()
for ix, *meal_list in meals_df.itertuples():
for days_combo in itertools.combinations(days, 4):
menu = dict(zip(days_combo, meal_list))
menus.append(menu)
df = pd.DataFrame(menus)
测向输出:
Sun Mon Tue Wed Thu Fri Sat
0 bread chocolate wine chocolate NaN NaN NaN
1 bread chocolate wine NaN chocolate NaN NaN
2 bread chocolate wine NaN NaN chocolate NaN
3 bread chocolate wine NaN NaN NaN chocolate
4 bread chocolate NaN wine chocolate NaN NaN
... ... ... ... ... ... ... ...
135 NaN NaN wine bread apple wine NaN
136 NaN NaN wine bread apple NaN wine
137 NaN NaN wine bread NaN apple wine
138 NaN NaN wine NaN bread apple wine
139 NaN NaN NaN wine bread apple wine
140 rows × 7 columns
欢迎来到堆栈溢出!不幸的是,你的问题不清楚。这些输入值如何映射到这些输出值?从您发布的内容来看,您似乎只是将
NaN
值随机放置在实际值之间。在您的用例中,例如第0行的“所有组合”是由什么构成的?我将尝试澄清!完全回答!谢谢你的帮助