创建数据框:
df = pd.DataFrame({'设置': [1, 1, 1, 2, 2, 2, 2, 2], '值': [1, 2, 3, 1, 2, 3, 4, 5]})
DataFrame 中的结果如下所示。
接下来我通过Set进行groupby操作,第一组如下所示。
grouped_by_Set = df.groupby('Set')
grouped_by_Set.get_group(1)
现在我想选择每组“值”列中除最后一个条目之外的所有条目。我可以使用 grouped_by_Set.nth([0, 1, 2])
和 grouped_by_Set.nth(-1)
选择每组的前三个(例如)和最后一个条目,但是选择每组中除最后一个条目之外的所有条目不适用于 grouped_by_Set.nth(0:-1)
。我无法明确指定条目,因为各组的长度不同。
最佳答案
IIUC,您可以在apply
中使用iloc
来完成
print(df.groupby('Set').apply(lambda x: x.iloc[:-1]).reset_index(drop=True))
Set Value
0 1 1
1 1 2
2 2 1
3 2 2
4 2 3
5 2 4
或者您可以使用duplicated
和keep='last'创建一个掩码,然后将此掩码与loc
一起使用
print(df.loc[df.duplicated(subset='Set', keep='last')])
Set Value
0 1 1
1 1 2
3 2 1
4 2 2
5 2 3
6 2 4
关于python-3.x - 如何对Python Pandas groupby对象进行不同长度的切片?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69570476/