Pandas 获取分组数据帧中的特定行
我有一个熊猫数据框 由列组成的euc数据Pandas 获取分组数据帧中的特定行,pandas,Pandas,我有一个熊猫数据框 由列组成的euc数据 code1 code2 euclidean_distance 我想为每组代码1按欧几里德距离排序得到前50行, 为了得到这个,我使用了: matrix_top_50 = euc_data.sort_values(['code1', 'euclidean_distance']) .groupby('code1').head(50).reset_index(drop=True) 现在,我想创建另一个矩阵,为每组code1按欧几里德距离排序得到接下来的1
code1 code2 euclidean_distance
我想为每组代码1按欧几里德距离排序得到前50行,
为了得到这个,我使用了:
matrix_top_50 = euc_data.sort_values(['code1', 'euclidean_distance'])
.groupby('code1').head(50).reset_index(drop=True)
现在,我想创建另一个矩阵,为每组code1按欧几里德距离排序得到接下来的100行
为此,我尝试使用.iloc
start = 51
end = 151
next_matrix = euc_data.sort_values(['code1', 'euclidean_distance'])
.groupby('code1').iloc[start:end].reset_index(drop=True)
但我得到了一个错误:
无法访问'DataFrameGroupBy'对象的可调用属性'iloc',请尝试使用'apply'方法
如何实现这一点?我认为您需要,但必要时数据必须包含开始
和结束
的行,否则错误:
ext_matrix = (euc_data.sort_values(['code1', 'euclidean_distance'])
.groupby('code1')
.apply(lambda x: x.iloc[start:end])
.reset_index(drop=True)
)
也许有更好的解决方案,但您可以使用
apply
作为错误提示:
next_matrix = euc_data.sort_values(['code1', 'euclidean_distance'])\
.groupby('code1').apply(lambda x: x.iloc[start:end]).\
reset_index(drop=True)
是否要为每组代码1执行此操作?你知道groupby的工作是什么吗?@AndreyF是的,我想为每一组code1@AndreyF我按问题编辑,谢谢:)一些数据和预期输出会很好…工作正常,只需测试两个数据帧,
matrix\u top\u 50和ext\u matrix
Super之间是否存在交集,很高兴能帮上忙!