首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将Dask系列转换为字符串类型,如果它包含不可接受的类型?

如何将Dask系列转换为字符串类型,如果它包含不可接受的类型?
EN

Stack Overflow用户
提问于 2020-08-03 06:08:44
回答 1查看 314关注 0票数 1

我想在任意的Dask系列上调用.value_counts(),如果它包含不可访问的类型,我希望将它转换为类型字符串。如果我没有必要的话,我不想把这个系列转换成一个字符串。我也不想在调用.compute()之前调用.value_counts()。我试过了

代码语言:javascript
复制
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:无法理解的类型:“列表”

代码语言:javascript
复制
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))

给出了同样的错误。

我也试过

代码语言:javascript
复制
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:尝试将dds.calar转换为布尔值.

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-08 01:11:26

也许先把列表转换成一些可以理解的东西,比如元组?

代码语言:javascript
复制
s.apply(tuple).value_counts()  ? 
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63224505

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档