用计算的布尔索引对dask(来自pandas)中的列进行子选择

2024-10-01 05:07:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我是新的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。 即使切换到inputdatapseudob中的就绪计算数据,错误仍然存在。
也许这个问题是专门针对dask列的计算布尔切片的思想而提出的。在

我只是找到了一个(也许是次优的)方法(不是解决方案)。将第4行改为

inputdata=inputdata.loc[:,inputdata.columns[(pseudob.values>0).compute()[0]]]

似乎有用。在


Tags: columnscsv数据代码错误切片doloc
1条回答
网友
1楼 · 发布于 2024-10-01 05:07:03

是的,数据帧的.loc访问器只有在获得具体的索引值时才起作用。否则,它不知道要向哪个分区请求数据。将lazy dask结果计算成具体的Pandas结果是解决这个问题的一个明智的解决方案,尤其是当索引适合内存时。在

相关问题 更多 >