如何在Dask CuDF数据框的列中将点(.)替换为逗号(,)?
Dask CuDF字符串列替换字符的正确方法
方法一:直接使用str.replace(推荐)
不需要先拆分再拼接,直接调用字符串列的str.replace方法就能完成替换,代码简洁且高效:
import cudf import dask_cudf # 初始化数据 tdf = cudf.DataFrame({"A": ["x.y", "a.b"]}) temp = dask_cudf.from_cudf(tdf, npartitions=1) # 直接替换字符 temp["A"] = temp["A"].str.replace(".", ",", regex=False) print(temp.compute())
输出结果:
A 0 x,y 1 a,b
注意必须添加regex=False参数——.在正则表达式中是匹配任意字符的通配符,不加该参数会错误替换所有字符,加上后才会将.当作普通字符处理。
方法二:处理已拆分后的列表列
如果你已经通过str.split得到了列表形式的列,可以使用字符串方法链中的str.join(而非Series对象的join方法)来完成拼接:
import cudf import dask_cudf tdf = cudf.DataFrame({"A": ["x.y", "a.b"]}) temp = dask_cudf.from_cudf(tdf, npartitions=1) # 拆分后拼接列表元素 temp["A"] = temp["A"].str.split(".", expand=False).str.join(",") print(temp.compute())
输出结果与预期一致。你之前报错的原因是直接调用了Series对象的join方法,而Dask CuDF的Series并没有这个属性,必须调用str.join来对每个列表元素执行拼接操作。
内容的提问来源于stack exchange,提问作者user3448011
相关产品推荐
相关产品推荐

