亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

第一行中的數據應等于最后一行-使用 Pandas

第一行中的數據應等于最后一行-使用 Pandas

一只甜甜圈 2021-12-16 14:52:17
我有一個大約 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  
查看完整描述

3 回答

?
慕雪6442864

TA貢獻1812條經驗 獲得超5個贊

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')


查看完整回答
反對 回復 2021-12-16
?
森林海

TA貢獻2011條經驗 獲得超2個贊

將這段添加到上述邏輯中:s['flag']='new_row'

它奏效了?。?/p>


查看完整回答
反對 回復 2021-12-16
?
HUH函數

TA貢獻1836條經驗 獲得超4個贊

以下代碼比較'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  time

row                                    

0     1           7333   24    26     9

1     2           7333   15    19    10

2     3           7333   24    26     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

8     1           7333   24    26     9

索引列設置為“行”,它被重置和重命名以獲得正確的排序。


查看完整回答
反對 回復 2021-12-16
  • 3 回答
  • 0 關注
  • 205 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號