第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

如何從 Pandas DataFrame 中的特定行開始檢測過去 2 個月的變化

如何從 Pandas DataFrame 中的特定行開始檢測過去 2 個月的變化

倚天杖 2022-01-05 10:33:51
假設(shè)我們有一個這樣的數(shù)據(jù)框:Id  Policy_id   Start_Date  End_Date    Fee1    Fee2    Last_dup0   b123        2019/02/24  2019/03/23  0       23      01   b123        2019/03/24  2019/04/23  0       23      02   b123        2019/04/24  2019/05/23  10      23      13   c123        2018/09/01  2019/09/30  10      0       04   c123        2018/10/01  2019/10/31  10      0       15   d123        2017/02/24  2019/03/23  0       0       06   d123        2017/03/24  2019/04/23  0       0       1該列Last_dup是應(yīng)用.duplicated( answer )的結(jié)果。在這種情況下,End_Date和的減法結(jié)果Start_Date始終為30天以進行簡化。我的目標是檢測的變化Fee1,并Fee2在過去的2個月為每個Policy_id。所以首先,我想找到最后一個元素,Policy_id然后從最后一個元素開始,比較幾個月之間的費用并檢測變化。預(yù)期結(jié)果:Id  Policy_id   Start_Date  End_Date    Fee1    Fee2    Last_dup    Changed0   b123        2019/02/24  2019/03/23  0       23      0           01   b123        2019/03/24  2019/04/23  0       23      0           02   b123        2019/04/24  2019/05/23  10      23      1           13   c123        2018/09/01  2019/09/30  10      0       0           04   c123        2018/10/01  2019/10/31  10      0       1           05   d123        2017/02/24  2019/03/23  0       0       0           06   d123        2017/03/24  2019/04/23  0       0       1           0我要開始為特定行,其中Last_dup被1然后上去和比較的變化FeeX。謝謝!
查看完整描述

1 回答

?
侃侃爾雅

TA貢獻1801條經(jīng)驗 獲得超16個贊

我認為為每項政策添加一個“交易編號列”會使這更容易。然后您可以對事務(wù)進行重復(fù)數(shù)據(jù)刪除以查看是否有“更改”的行。


看下面的例子:


import pandas as pd


dat = [['b123', 234, 522], ['b123', 234, 522], ['c123', 34, 23], 

['c123', 38, 23], ['c123', 34, 23]]


cols = ['Policy_id', 'Fee1', 'Fee2']


df = pd.DataFrame(dat, columns=cols)


df['transaction_id'] = 1

df['transaction_id'] = df.groupby('Policy_id').cumsum()['transaction_id']


df2 = df[cols].drop_duplicates()


final_df = df2.join(df[['transaction_id']])

輸出是:


      Policy_id  Fee1  Fee2  transaction_id

0      b123   234   522               1

2      c123    34    23               1

3      c123    38    23               2

而且由于b123去重后只有一筆交易,所以您知道沒有任何變化。有些東西必須改變c123。


您可以使用final_df[final_df.transaction_id > 1].


如前所述,您可能需要對日期進行一些其他數(shù)學(xué)計算,但這應(yīng)該可以幫助您完成大部分工作。


編輯:如果您只想查看最近兩個月,您可以在運行上述之前過濾 DataFrame。


這個怎么做:


為過濾日期創(chuàng)建一個變量,如下所示:


from datetime import date, timedelta

filtered_date = date.today() - timedelta(days=60)

然后我會使用這個pyjanitor包來使用它的 filter_date 方法。只需過濾您想要的列;我認為這Start_date看起來最合理。


import janitor


final_df.filter_date("Start_date", start=filtered_date)

一旦你運行import janitor,final_df就會神奇地擁有filter_date可用的方法。


您可以在此處查看更多filter_date示例。


查看完整回答
反對 回復(fù) 2022-01-05
  • 1 回答
  • 0 關(guān)注
  • 181 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號