如何使用 python 检索 pandas group-by 的最后一列行值?

我有数据集 df. 我想将每个名字的最后一个阶段作为一个新列。


Name     Stage     stage_number

a        Open          1

a        Paid          2

a        Transit       3

a        Wait          4

a        Complete      5

b        Open          1

b        Paid          2

b        Transit       3

b        Wait          4

b        Canceled      5

预期输出:


Name     Stage     stage_number   Last_Stage

a        Open          1           Complete

a        Paid          2           Complete

a        Transit       3           Complete

a        Wait          4           Complete

a        Complete      5           Complete

b        Open          1           Cancelled

b        Paid          2           Cancelled

b        Transit       3           Cancelled

b        Wait          4           Cancelled

b        Canceled      5           Cancelled

我尝试了下面的代码但出现错误,


def stage(df):

    for x in df['Name']:

        return df['Stage'].iloc[-1]


df['last_stage'] = df.apply(stage, axis = 1)

df

我的错误


AttributeError: 'str' object has no attribute 'iloc'


慕田峪9158850
浏览 1551回答 2
2回答

素胚勾勒不出你

这对你有用吗?df["last_stage"] = df.groupby("Name")["Stage"].transform("last")print(df)  Name     Stage  stage_number last_stage0    a      Open             1   Complete1    a      Paid             2   Complete2    a   Transit             3   Complete3    a      Wait             4   Complete4    a  Complete             5   Complete5    b      Open             1   Canceled6    b      Paid             2   Canceled7    b   Transit             3   Canceled8    b      Wait             4   Canceled9    b  Canceled             5   Canceled

冉冉说

如果你真的想按照你的功能,你可以这样做:def stage(df):    for name, group in df.groupby('Name'):            for i in range(0, len(group)):                 return group['Stage'].iloc[-1]df['last_stage'] = df.apply(stage, axis = 1)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python