Когда вы говорите уникальный, вы имеете в виду, что если вы выберете значение, вы не захотите выбирать его снова?
Если это так, то pop может быть полезным:
import random as r
df = [['apple', 'red', '0.2'], ['apple', 'green', '8.9'], ['apple', 'brown', '2.9'],
['guava', 'green', '1.9'], ['guava', 'yellow', '4.9'], ['guava', 'light green', '2.3']]
total = len(df)
targetdf = []
for value in range(2):
position = r.randint(0,total-1)
targetdf.append(df.pop(position)[:2])
total-=1
#print(targetdf)
#[['apple', 'green'], ['guava', 'yellow']]
Что делает этот код, так это то, что он выбирает случайную позицию в исходном списке и затем выталкивает ее. Затем это значение сохраняется в новом списке.