从DataFrame行中选择变量组合

时间:2018-06-28 15:58:11

标签: python pandas dataframe pandas-groupby

我有一个带有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

1 个答案:

答案 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}