我有一个dask系列,我需要从中删除infs和nans。 .dropna()
只会删除nans。在numpy / pandas中,我会做result = result[np.isfinite(result)]
之类的事情。什么是dask-land中推荐的等价物?使用布尔数组索引dask对象会产生错误。有没有办法告诉dask inf
或-inf
应该被视为空值,例如?
答案 0 :(得分:1)
您应该避免使用NumPy功能。这些将触发计算,未来的dask.dataframe操作将对使用这些结果犹豫不决。
相反,使用等效的dask.array函数。这是一个最小的例子。
In [1]: import numpy as np
...: import pandas as pd
...: import dask.dataframe as dd
...: import dask.array as da
...: df = pd.DataFrame({'x': [0, 1, 2], 'y': [0, np.inf, 5]})
...: df
...:
Out[1]:
x y
0 0 0.000000
1 1 inf
2 2 5.000000
In [2]: ddf = dd.from_pandas(df, npartitions=2)
...: ddf[~da.isinf(ddf.y)].compute()
...:
Out[2]:
x y
0 0 0.0
2 2 5.0
答案 1 :(得分:0)
好的,我刚刚发现我可以做到以下几点:
import dask.array as da
result = result[da.isfinite(result)]
一般来说,看起来只是使用da.
数组操作是我一直在寻找的缺失部分。