python-3.x - 如何对Python Pandas groupby对象进行不同长度的切片?

标签 python-3.x pandas pandas-groupby slice

创建数据框:

df = pd.DataFrame({'设置': [1, 1, 1, 2, 2, 2, 2, 2], '值': [1, 2, 3, 1, 2, 3, 4, 5]})

DataFrame 中的结果如下所示。

Pandas Dataframe

接下来我通过Set进行groupby操作,第一组如下所示。

grouped_by_Set = df.groupby('Set')
grouped_by_Set.get_group(1)

enter image description here

现在我想选择每组“值”列中除最后一个条目之外的所有条目。我可以使用 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/

相关文章:

python - 正则表达式没有字符应该重复

python - 为文件夹中的文件生成字典元素列表

python - Pandas 中仅针对所有先前行的条件运行计数

python - 如何使用 iloc 将条件语句应用于 Pandas Dataframe 上的多个列?

python分组和进一步分组

python pandas : assign control vs. 根据 % 随机处理分组

python - 避免函数内部出现 ZeroDivisionError

python - 如何在pandas表的一次迭代中设置多个值?

python - 如何使用 Pandas 映射嵌套在字典中的元组的索引?

python - 如何从字典中替换数据框列中的特定值?