首页 > 解决方案 > 满足条件时将行从一个数据帧附加到下一个数据帧

问题描述

我想在值更改之前识别一列重复值中的最后一个条目,并将该条目的整行传递给新的数据框。

df1[location]在更改到新的重复位置之前重复多行。在位置 x 更改为位置 y 并将该行传递给 之前,我只需要位置 x 的最后一行df2,然后对位置 y 重复,依此类推。

我有一个 for 循环来识别位置 x 的最后一个条目,但需要一种方法将与所述条目关联的行附加到新数据帧

prev_loc = None
for loc in df1['location']
    if loc == prev_loc:
        pass
    else:
        #????
    prev_loc = loc

df2将具有相同的列结构,df1只有与给定位置的最后一个条目对应的行子集。

标签: pythonpandas

解决方案


让我们采用以下输入 DataFrame:

    c1   c2   c3
0  120  215  393
1  120  218  396
2  120  213  399
3  130  366  301
4  130  144  302
5  130  208  303

它包含 2 个具有相同c1的组(120 和 130)。

要获取每个组的最后一行,请运行:

df.groupby('c1').last().reset_index()

结果是:

    c1   c2   c3
0  120  213  399
1  130  208  303

另一种解决方案,如果您还想要最后一行的键:

df.groupby('c1').tail(1)

这次你会得到:

    c1   c2   c3
2  120  213  399
5  130  208  303

推荐阅读