猿问

第一行中的数据应等于最后一行-使用 Pandas

我有一个大约 15 列的 Pandas 数据框,我想要做的就是查看 partition_num 第一行中的数据是否等于 partition_num 最后一行中的数据,如果不相等,则在末尾添加一个新行第一行的数据


输入:


row   id  partition_num   lat    long    time

 0     1    7333           24     26      9

 1     2    7333           15     19      10

 2     3    7333           24     25      9

 3     1    8999           26     18      15

 4     2    8999           15     17      45

 5     3    8999           26     18      15

 6     1    3455           12     14      18

 7     2    3455           12     14      18

期望的输出:


row   id  partition_num   lat    long    time

 0     1    7333           24     26      9

 1     2    7333           15     19      10

 2     3    7333           25     26      9

 3     4    7333           24     26      9

 4     1    8999           26     18      15

 5     2    8999           15     17      45

 6     3    8999           26     18      15

 7     1    3455           12     14      18

 8     2    3455           12     14      18

由于第0行中partition_num -7333的数据不等于第2行的数据,因此添加一个与第0行数据相同的新行(第3行)


我们可以添加一个新列来标识新记录,例如 flag :


row   id  partition_num   lat    long    time   flag  

 0     1    7333           24     26      9      old  

 1     2    7333           15     19      10     old  

 2     3    7333           25     26      9      old  

 3     4    7333           24     26      9      new  

 4     1    8999           26     18      15     old  

 5     2    8999           15     17      45     old  

 6     3    8999           26     18      15     old  

 7     1    3455           12     14      18     old  

 8     2    3455           12     14      18     old  


一只甜甜圈
浏览 170回答 3
3回答

慕雪6442864

groupby将轻松构建 sub_dataframes per partition_num。从那时起,处理很简单:for i, x in df.groupby('partition_num'):    if (x.iloc[0]['partition_num':] != x.iloc[-1]['partition_num':]).any():        s = x.iloc[0].copy()        s.id = x.iloc[-1].id + 1        df = df.append(s).reset_index(drop=True).rename_axis('row')

森林海

将这段添加到上述逻辑中:s['flag']='new_row'它奏效了!!

HUH函数

以下代码比较'partition_num'第一行和最后一行中的值,如果不匹配,则将第一行附加到数据帧的末尾:if df.loc[0, 'partition_num'] != df.loc[len(df)-1, 'partition_num']:    df = df.append(df.loc[0, :]).reset_index(drop=True)    df.index.name = 'row'print(df)     id  partition_num  lat  long  timerow                                    0     1           7333   24    26     91     2           7333   15    19    102     3           7333   24    26     93     1           8999   26    18    154     2           8999   15    17    455     3           8999   26    18    156     1           3455   12    14    187     2           3455   12    14    188     1           7333   24    26     9索引列设置为“行”,它被重置和重命名以获得正确的排序。
随时随地看视频慕课网APP

相关分类

Python
我要回答