我是新的do dask(导入为dd)并尝试转换一些pandas(导入为pd)代码。在
下面几行的目标是将数据切片到这些列中,这些列的值完全满足dask中计算的需求。在
csv中有一个给定的表。前一个代码是
inputdata=pd.read_csv("inputfile.csv");
pseudoa=inputdata.quantile([.035,.965])
pseudob=pseudoa.diff().loc[.965]
inputdata=inputdata.loc[:,inputdata.columns[pseudob.values>0]]
inputdata.describe()
工作正常。 我简单的想法是把第一行替换成
^{pr2}$但这导致了奇怪的错误消息IndexError: too many indices for array
。
即使切换到inputdata
和pseudob
中的就绪计算数据,错误仍然存在。
也许这个问题是专门针对dask列的计算布尔切片的思想而提出的。在
我只是找到了一个(也许是次优的)方法(不是解决方案)。将第4行改为
inputdata=inputdata.loc[:,inputdata.columns[(pseudob.values>0).compute()[0]]]
似乎有用。在
是的,数据帧的
.loc
访问器只有在获得具体的索引值时才起作用。否则,它不知道要向哪个分区请求数据。将lazy dask结果计算成具体的Pandas结果是解决这个问题的一个明智的解决方案,尤其是当索引适合内存时。在相关问题 更多 >
编程相关推荐