如何使用idxmin()返回pandas Series对象

时间:2017-07-28 00:38:07

标签: python pandas numpy dask

我只是尝试返回一个系列的最小值索引(它只来自Dask Dataframe的一列),然后使用该索引访问同一Dataframe的不同列中的相应值。 (即相同索引处的值。)我也在这个过程中做一些中间数学运算。

我使用以下代码:

start_time = Dataframe['time'].sub(c1).pow(2).idxmin() 
end_time   = Dataframe['time'].sub(c2).pow(2).idxmin()

#Now pull out data from a different column in Dataframe using start_time and end_time 

data = Dataframe['current'].loc[start_time:end_Time]

但是我一直收到以下错误:

pandas.core.indexing.IndexingError: Too many indexers

我不知道这意味着什么,但我注意到的另一件事是我不知道idxmin()返回的是什么类型的值。这对我来说是一个完全神秘的对象。当我尝试打印出start_timeend_time的值时,我得到的是:

start_time: dd.Scalar<series-..., dtype=int32>

end_time: dd.Scalar<series-..., dtype=int32>

我找不到关于这些对象的任何具体信息(虽然我已经确定它们是“Scalar”对象),但我找不到任何关于“标量”对象存在哪些方法或属性的文档。

这是问题的症结所在,因为idxmin()似乎返回的数据类型无法用于在Dask或pandas中进行索引....真的很有用。

我也试过

data = Dataframe.loc[start_time:end_time,'current']

这没有给出错误,但执行此操作后data仍为空。

有人请我直截了当。

感谢。

1 个答案:

答案 0 :(得分:0)

dd.Scalar是标量的标准延迟值。如果你要计算一个系列的总和或平均值,你会得到一个类似的对象。

您可以尝试调用.compute()方法来查看其具体值。