Я хотел бы вызвать .value_counts()
для произвольной серии Dask, и я хочу преобразовать серию как тип string , если он содержит нехешируемый тип. Я не хочу преобразовывать серию в строку, если мне не нужно. Я также не хочу звонить .compute()
перед звонком .value_counts()
. Я пробовал
df = pd.DataFrame({"a":[[1], ["foo"], ["foo", "bar"]]})
df = dd.from_pandas(df, npartitions=1)
srs = df["a"]
try:
val_counts = srs.value_counts()
except TypeError:
srs = srs.astype(str)
val_counts = srs.value_counts()
val_counts.compute()
, что дает ошибку
TypeError: unhashable type: 'list'
и
df = pd.DataFrame({"a":[[1], ["foo"], ["foo", "bar"]]})
df = dd.from_pandas(df, npartitions=1)
srs = df["a"]
def func(srs):
try:
val_counts = srs.value_counts()
except TypeError:
srs = srs.astype(str)
val_counts = srs.value_counts()
return val_counts
val_counts = dask.compute(func(srs))
, что дает ту же ошибку.
Я также пробовал
df = pd.DataFrame({"a":[[1], ["foo"], ["foo", "bar"]]})
df = dd.from_pandas(df, npartitions=1)
srs = df["a"]
if srs.apply(lambda y: isinstance(y, list), meta=srs).any():
srs = srs.astype(str)
srs.value_counts().compute()
, что дает ошибку
TypeError: Попытка преобразовать dd.Scalar в логическое значение.