если порядок не имеет значения, вы можете преобразовать столбец в массив numpy и применить операцию к каждой строке в понимании списка.
import numpy as np
df['C_Unique'] = [np.unique(item) for item in df['C'].values]
print(df)
A B C C_Unique
0 1 0 [1, 4, 4, 4] [1, 4]
1 3 2 [1, 4, 4, 4] [1, 4]
2 3 3 [3, 4, 4, 5] [3, 4, 5]
3 4 4 [3, 4, 4, 5] [3, 4, 5]
4 5 5 [4, 4, 2, 1] [1, 2, 4]
5 3 6 [1, 2, 3, 4] [1, 2, 3, 4]
6 3 7 [7, 8, 9, 1] [1, 7, 8, 9]
Другой метод - использовать explode
и groupby.unique
df['CExplode'] = df['C'].explode().groupby(level=0).unique()
A B C C_Unique CExplode
0 1 0 [1, 4] [1, 4] [1, 4]
1 3 2 [1, 4] [1, 4] [1, 4]
2 3 3 [3, 4, 5] [3, 4, 5] [3, 4, 5]
3 4 4 [3, 4, 5] [3, 4, 5] [3, 4, 5]
4 5 5 [4, 2, 1] [1, 2, 4] [4, 2, 1]
5 3 6 [1, 2, 3, 4] [1, 2, 3, 4] [1, 2, 3, 4]
6 3 7 [7, 8, 9, 1] [1, 7, 8, 9] [7, 8, 9, 1]