找到第N个唯一值并返回到Python中的数据框

时间:2018-06-01 14:52:58

标签: python pandas unique

我有以下pandas数据框:

DF1

Out 1 Out 2 Out 3 Out 4 Out 5
3     1     2     4     5
100  50    200    300   200

df1中的值表示df2 $ ID中的第N个唯一值。所以第一个唯一值是999,第三个唯一值是777等。

ID  ID2
999 888
101 801
777 666
777 666
555 100
555 100
111 100

因此,对于最终的df3,我需要以下内容:注意我只更新了示例的第一行

Out 1 Out 2 Out 3 Out 4 Out 5
777   999   101   555   111
100  50    200    300   200

我已尝试使用@Wen的答案,但它会产生以下错误:我无法找到对此答案的答案,除此之外可能是索引错误。我还确保将相关数据类型转换为int32无效。任何帮助将不胜感激 -

ValueError: Row labels must have same size as column labels

1 个答案:

答案 0 :(得分:1)

您可drop_duplicates并使用lookup

s=df2.drop_duplicates('ID').reset_index(drop=True)

df1.iloc[0,:]=s.lookup(df1.iloc[0,:]-1,['ID']*len(s))
df1
Out[222]: 
   Out1  Out2  Out3  Out4  Out5
0   777   999   101   555   111
1   100    50   200   300   200