我有一个带有4个属性的DataFrame,每个属性包含2个变量。 {'A':[A1,A2],'B':[B1,B2],'C':[C1,C2],'D':[D1,D2]}
我的输入数据框看起来像这样:
Date A B C D
J1 A1 B1 C1 D1
J1 A1 B2 C2 D1
J1 A2 B2 C2 D2
J1 A2 B1 C1 D2
J2 A2 B1 C1 D2
J2 A1 B1 C1 D1
所需的输出: 4个DataFrame分别包含变量的唯一组合(无论日期值是什么)。
输出1:组合A1,B1,C1,D1
Date A B C D
J1 A1 B1 C1 D1
J2 A1 B1 C1 D1
输出2:组合A1,B2,C2,D1
Date A B C D
J1 A1 B2 C2 D2
输出3:组合A2,B2,C2,D2
Date A B C D
J1 A2 B2 C2 D2
输出4:组合A2,B1,C1,D2
Date A B C D
J1 A2 B1 C1 D2
J2 A2 B1 C1 D2
答案 0 :(得分:2)
使用字典来存储可变数量的变量。在这种情况下,您可以使用groupby
提取唯一的组:
res = {i: j[1] for i, j in enumerate(df.groupby(['A', 'B', 'C', 'D']), 1)}
print(res)
{1: Date A B C D
0 J1 A1 B1 C1 D1
5 J2 A1 B1 C1 D1,
2: Date A B C D
1 J1 A1 B2 C2 D1,
3: Date A B C D
3 J1 A2 B1 C1 D2
4 J2 A2 B1 C1 D2,
4: Date A B C D
2 J1 A2 B2 C2 D2}