gpt4 book ai didi

python - 在 pandas DataFrame 中保留每组的最后 N 条记录

转载 作者:行者123 更新时间:2023-12-02 19:25:24 26 4
gpt4 key购买 nike

我有一个 pandas df,如下所示。

df = pd.DataFrame({'a':['ABC', 'ABC', 'DEF', 'DEF', 'DEF', 'DEF'], 'b':['1', '1', '2', '2', '2', '2'], 'c':[0.1, 0.2, 0.3, 0.4, 0.5, 0.6]})

a b c
0 ABC 1 0.1
1 ABC 1 0.2
2 DEF 2 0.3
3 DEF 2 0.4
4 DEF 2 0.5
5 DEF 2 0.6

我想将每个“组”(ABC、DEF)的最后“n”行保留在“a”列中,其中“n”取决于“b”中的值。我的结果应该是一个看起来像这样的新 df

    a    b    c
1 ABC 1 0.2
4 DEF 2 0.5
5 DEF 2 0.6

最佳答案

使用groupbytail:

df.groupby('a', group_keys=False).apply(
lambda x: x.tail(int(x['b'].iloc[0])))

a b c
1 ABC 1 0.2
4 DEF 2 0.5
5 DEF 2 0.6

这假设该组的“b”列中的所有值都相等,因此该组中的第一个值用于计算尾部。


如果您需要在每组中保留相同数量的行,解决方案可简化为

df.groupby('a').tail(n)

关于python - 在 pandas DataFrame 中保留每组的最后 N 条记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62477396/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com