我很难找出在 Pandas 中对大型数据集进行子集化的最佳方法,但是我对 Pandas 的经验是有限的。
我的数据由 4 列和约 4 亿行组成。这些列代表日期时间、X 位置、Y 位置,然后是有关该点的一些信息。我的目标是通过 X、Y 对对 DataFrame 进行子集化,这些对的“Stuff”值至少超过阈值一次。需要明确的是,我希望识别 X、Y 对的所有实例,而不仅仅是那些超过阈值的实例。显然,这需要以一种内存有效的方式来完成。我应该提到,数据目前按日期索引(尽管日期不是唯一的)。
例如,如果这是我的数据:
In [6]: data
Out[6]:
Stuff X Y
Date
2004-01-01 2.3 10 3
2004-01-02 5.6 20 2
2004-01-02 14.9 30 4
2004-01-02 10.2 10 3
2004-01-03 3.1 30 4
2004-01-04 2.9 10 5
2004-01-05 3.4 20 4
我的阈值为 10,我希望得到以下结果,因为 10,3 和 30,4 对都有一个超过阈值的“Stuff”实例:
In [7]: data
Out[7]:
Stuff X Y
Date
2004-01-01 2.3 10 3
2004-01-02 14.9 30 4
2004-01-02 10.2 10 3
2004-01-03 3.1 30 4
任何提示将不胜感激。我怀疑我可能需要将 X、Y 上的索引更改为 MultiIndex,但我不确定。我也研究过使用 groupby(['X','Y']).max 但我不相信我可以使用这些结果对我的原始数据框进行子集化。
问题更新 @jsexauer 提出的解决方案是我想要的,但是由于数据量大,我遇到了内存错误。有关如何优化此过程的任何建议?