Python:如何在2个不同的列上获取唯一值?

时间:2018-11-18 18:25:39

标签: python pandas

我有一个如下数据框

df
    idA  idB  yA  yB
0   3     2   0   1
1   0     1   0   0
2   0     4   0   1
3   0     2   0   1
4   0     3   0   0

我希望每个y有一个唯一的id。所以

df
    id   y
0    0   0
1    1   0
2    2   1
3    3   3
4    4   1

1 个答案:

答案 0 :(得分:0)

首先用iloc展平numpy.ravel选择的列,然后用id列展平sort_valuesdrop_duplicates来创建新的DataFrame:

df2 = (pd.DataFrame({'id':df.iloc[:,:2].values.ravel(), 
                     'y': df.iloc[:,2:4].values.ravel()})
        .sort_values('id')
        .drop_duplicates(subset=['id'])
        .reset_index(drop=True))
print (df2)
   id  y
0   0  0
1   1  0
2   2  1
3   3  0
4   4  1

详细信息

print (pd.DataFrame({'id':df.iloc[:,:2].values.ravel(), 
                    'y': df.iloc[:,2:4].values.ravel()}))

   id  y
0   3  0
1   2  1
2   0  0
3   1  0
4   0  0
5   4  1
6   0  0
7   2  1
8   0  0
9   3  0