【发布时间】:2021-12-23 05:42:25
【问题描述】:
我有一个数据框,dt 如下所示。机器 M1 具有三个可能的开始和结束时间,M2 和 M3 也是如此。
MID ST ET
M1 11/7/2021 4:52 11/7/2021 6:22
M1 11/7/2021 6:22 11/7/2021 7:52
M1 11/7/2021 7:52 11/7/2021 9:22
M2 11/7/2021 4:54 11/7/2021 6:24
M2 11/7/2021 6:24 11/7/2021 7:54
M2 11/7/2021 7:54 11/7/2021 9:24
M3 11/7/2021 4:56 11/7/2021 6:26
M3 11/7/2021 6:26 11/7/2021 7:56
M3 11/7/2021 7:56 11/7/2021 9:26
我想以数据框的形式找到每台机器的开始时间和结束时间的组合。就像我分别固定 M2 和 M3 的 ST 和 ET 的值并改变 M1 一样,只有三种可能的组合如下。我希望数据框中的所有此类组合都像 df 一样,每个组合都具有唯一 ID(包括上述对 M2 和 M3 的分析)。
Combination C1
MID ST ET
M1 11/7/2021 4:52 11/7/2021 6:22
M2 11/7/2021 4:54 11/7/2021 6:24
M3 11/7/2021 4:56 11/7/2021 6:26
Combination C2
MID ST ET
M1 11/7/2021 6:22 11/7/2021 7:52
M2 11/7/2021 4:54 11/7/2021 6:24
M3 11/7/2021 4:56 11/7/2021 6:26
Combination C3
MID ST ET
M1 11/7/2021 7:52 11/7/2021 9:22
M2 11/7/2021 4:54 11/7/2021 6:24
M3 11/7/2021 4:56 11/7/2021 6:26
Dataframe, df(最终的 dataframe 将是这个):
MID ST ET Cname
M1 11/7/2021 4:52 11/7/2021 6:22 C1
M2 11/7/2021 4:54 11/7/2021 6:24 C1
M3 11/7/2021 4:56 11/7/2021 6:26 C1
M1 11/7/2021 6:22 11/7/2021 7:52 C2
M2 11/7/2021 4:54 11/7/2021 6:24 C2
M3 11/7/2021 4:56 11/7/2021 6:26 C2
M1 11/7/2021 7:52 11/7/2021 9:22 C3
M2 11/7/2021 4:54 11/7/2021 6:24 C3
M3 11/7/2021 4:56 11/7/2021 6:26 C3
M1 11/7/2021 4:52 11/7/2021 6:22 C4
M2 11/7/2021 6:24 11/7/2021 7:54 C4
M3 11/7/2021 4:56 11/7/2021 6:26 C4
M1 11/7/2021 6:22 11/7/2021 7:52 C5
M2 11/7/2021 6:24 11/7/2021 7:54 C5
M3 11/7/2021 4:56 11/7/2021 6:26 C5
M1 11/7/2021 7:52 11/7/2021 9:22 C6
M2 11/7/2021 6:24 11/7/2021 7:54 C6
M3 11/7/2021 4:56 11/7/2021 6:26 C6
M1 11/7/2021 4:52 11/7/2021 6:22 C7
M2 11/7/2021 7:54 11/7/2021 9:24 C7
M3 11/7/2021 4:56 11/7/2021 6:26 C7
M1 11/7/2021 6:22 11/7/2021 7:52 C8
M2 11/7/2021 7:54 11/7/2021 9:24 C8
M3 11/7/2021 4:56 11/7/2021 6:26 C8
M1 11/7/2021 7:52 11/7/2021 9:22 C9
M2 11/7/2021 7:54 11/7/2021 9:24 C9
M3 11/7/2021 4:56 11/7/2021 6:26 C9
M1 11/7/2021 4:52 11/7/2021 6:22 C10
M2 11/7/2021 7:54 11/7/2021 9:24 C10
M3 11/7/2021 6:26 11/7/2021 7:56 C10
M1 11/7/2021 6:22 11/7/2021 7:52 C11
M2 11/7/2021 7:54 11/7/2021 9:24 C11
M3 11/7/2021 6:26 11/7/2021 7:56 C11
M1 11/7/2021 7:52 11/7/2021 9:22 C12
M2 11/7/2021 7:54 11/7/2021 9:24 C12
M3 11/7/2021 6:26 11/7/2021 7:56 C12
M1 11/7/2021 4:52 11/7/2021 6:22 C13
M2 11/7/2021 7:54 11/7/2021 9:24 C13
M3 11/7/2021 7:56 11/7/2021 9:26 C13
M1 11/7/2021 6:22 11/7/2021 7:52 C14
M2 11/7/2021 7:54 11/7/2021 9:24 C14
M3 11/7/2021 7:56 11/7/2021 9:26 C14
M1 11/7/2021 7:52 11/7/2021 9:22 C15
M2 11/7/2021 7:54 11/7/2021 9:24 C15
M3 11/7/2021 7:56 11/7/2021 9:26 C15
我尝试了什么?
我在itertools 中使用了combination 和product 函数,但没有得到想要的结果。我也试过groupby。
from itertools import product
df = pd.DataFrame(list(product(*dt.values.T)))
【问题讨论】:
标签: python pandas dataframe loops combinations