Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中,如何尝试数据帧的所有可能组合,但保持行项目的顺序?_Python_Python 3.x_Dataframe_Combinations_Itertools - Fatal编程技术网

在Python中,如何尝试数据帧的所有可能组合,但保持行项目的顺序?

在Python中,如何尝试数据帧的所有可能组合,但保持行项目的顺序?,python,python-3.x,dataframe,combinations,itertools,Python,Python 3.x,Dataframe,Combinations,Itertools,正如标题所示,我必须维护行项目的顺序,因此,来自itertools的“组合”实际上没有帮助 这意味着,如果你仔细想想的话,我们必须改变列中项目之间的空间,以使不同的组合不会改变顺序。 例如: 由此: 周一周二周三周四。。。 0面包巧克力酒巧克力。。。 一份披萨面包巧克力。。。 2个面包披萨面包苹果。。。 3葡萄酒面包苹果酒。。。 我想尝试这个数据帧的所有可能组合,改变一个和另一个项目的距离,当然,最大值,否则它只会在这两者之间添加无限的空间 MON TUE

正如标题所示,我必须维护行项目的顺序,因此,来自itertools的“组合”实际上没有帮助

这意味着,如果你仔细想想的话,我们必须改变列中项目之间的空间,以使不同的组合不会改变顺序。 例如:

由此:

周一周二周三周四。。。
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行的“所有组合”是由什么构成的?我将尝试澄清!完全回答!谢谢你的帮助