0

I would like to know if there is an equivalent for pandas.Series.unique() when the series contains non-hashable elements (in my case, lists).

For instance, with

>> ds
                   XTR
s0b0_VARC-0.200    [0.05, 0.05]
s0b0_VARC-0.100    [0.05, 0.05]
s0b0_VARC0.000     [0.05, 0.05]
s0b0_VARC0.100     [0.05, 0.05]
s0b1_VARC-0.200    [0.05, 0.05]
s0b1_VARC0.000     [0.05, 0.05]
s0b1_VARC0.100     [0.05, 0.05]
s0b2_VARC-0.200    [0.05, 0.05]
s0b2_VARC-0.100    [0.06, 0.025]
s0b2_VARC0.000     [0.05, 0.05]
s0b2_VARC0.100     [0.05, 0.05]

I would like to get

>> ds.unique()
2
Arkangus
  • 116
  • 8

1 Answers1

0

Thanks @Quang Hoang

Inspired from this SO answer, I wrote the following function (not sure how robust it is though):

def count_unique_values(series):
    try:
        tuples = [tuple(x) for x in series.values]
        series = pd.Series(tuples)
        nb = len(series.unique())
        print(nb)
    except TypeError:
        nb = len(series.unique())
    return nb
Arkangus
  • 116
  • 8