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示例。
添加回答
舉報