我有点奇怪的问题。我有一个非常大的数据帧,我正在尝试样本。你知道吗
我的数据如下所示(两列x和y):
x,y
1,'a'
1,'b'
1,'c'
3,'a'
3,'b'
3,'c'
6,'a'
6,'b'
6,'c'
我想根据“x”的值取样。我希望每32个x值中有一个样本(基于x的变化,所以我希望在1和32之间采样一次,即使只有一个x值在1和32之间)。你知道吗
我想做这样的事情:df[df['x'] % 32 == 0]
。问题是x的值不一定是均匀分布的(虽然它们是“近似的”,但并不总是如此——例如在给定的示例中)。例如,如果某个子问题中x的所有值都是奇数,则上述采样将返回空数据帧。实际上,我希望每32'x采样一次,或者如果不存在这样的值,则取最接近第32个值的值(近似最接近是可以接受的——例如,取下一个可用值就可以了)。你知道吗
因此,如果我有一系列X的[0, 10, 32, 39, 64, 70, 73, 74, 97, 100, 110, 129]
,我想对X值与[0, 32, 64, 97, 129]
匹配的行进行采样。你知道吗
理想情况下,我还可以将此操作矢量化,因为数据帧通常相当大。你知道吗
您可以使用列表理解动态创建bin,然后使用
pd.cut
创建组,并使用groupby
和sample(1)
为“X”的每32个值获取一条记录。你知道吗输出:
相关问题 更多 >
编程相关推荐