考虑检索 pandas DataFrame 中特定列的每个不同值中的前两条记录的任务。作为示例,请考虑以下 DataFrame:
df = pd.DataFrame({'id':[1,1,1,2,2,2,2,3,4], 'value':[1,2,3,1,2,3,4,1,1]})
传统上,您可以通过在按所需列分组后对每个组中的记录进行编号来解决此问题:
dfN = df.groupby('id').apply(lambda x:x['value'].reset_index()).reset_index()
但是,更高效、更优雅的方法是利用 pandas 的 head 函数:
df.groupby('id').head(2)
这会直接返回每个记录的前两条记录组,无需额外的列编号。
id value id 1 0 1 1 1 1 2 2 3 2 1 4 2 2 3 7 3 1 4 8 4 1
要删除 MultiIndex 并展平结果:
df.groupby('id').head(2).reset_index(drop=True)
id value 0 1 1 1 1 2 2 2 1 3 2 2 4 3 1 5 4 1
以上是如何高效地检索 Pandas DataFrame 中组内的前 N 条记录?的详细内容。更多信息请关注PHP中文网其他相关文章!