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

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

在多個條件上查找重復項

在多個條件上查找重復項

幕布斯6054654 2021-12-08 14:42:16
我有一組帶有Date、Amount、Description和Source的金融交易,我想找到金額相同、日期在一天內但來源不同的交易。來源應該不同,因為交易是從許多來源導入的,并且每個來源都有唯一的條目。例如,我想發現第 1 行和第 3 行是重復的:'date','amount','description','source'1/5/2018, 5.28, 'McDonalds', 'BankOfAmerica'1/6/2018, 8.44, 'Starbucks', 'BankOfAmerica'1/5/2018, 5.28, 'McDonalds Rest', 'BoA'2/10/2018, 22.72, 'Chipolte', 'Chase'3/10/2018, 4.58, 'Wendys', 'BoA'我在 Python 中嘗試過,我可以找到重復項:df_no_dups = df.drop_duplicates(subset=['amount','dates'])df_dups = df[~df.isin(df_no_dups)].dropna()但這是一個精確的日期匹配,然后我必須運行另一個腳本以確保來源不同。我還嘗試對數量進行分組,然后在其中進行迭代以查找日期接近且來源不同的位置,但我無法弄清楚組的詳細信息。其他方法可能是使用 SQL 或在交易所在的電子表格 (google) 中。
查看完整描述

2 回答

?
ITMISS

TA貢獻1871條經驗 獲得超8個贊

考慮以下數據(在第 3 行添加一行以便更好地理解)


data = pd.compat.StringIO("""5 Jan, 5.28, 'McDonalds', 'BankOfAmerica'

6 Jan, 8.44, 'Starbucks', 'BankOfAmerica'

5 Jan, 5.28, 'McDonalds Rest', 'BoA'

5 Jan, 5.28, 'McDonalds Rest', 'BankOfAmerica'

10 Feb, 22.72, 'Chipolte', 'Chase'""")

df = pd.read_csv(data,header=None)

df.columns=['Date','Amount','Dscription','Source']

print(df)


 Date  Amount         Dscription            Source

0   5 Jan    5.28        'McDonalds'   'BankOfAmerica'

1   6 Jan    8.44        'Starbucks'   'BankOfAmerica'

2   5 Jan    5.28   'McDonalds Rest'             'BoA'

3   5 Jan    5.28   'McDonalds Rest'   'BankOfAmerica'

4  10 Feb   22.72         'Chipolte'           'Chase'

對于重復和不同的來源:


df_dups =df[df.duplicated(['Date','Amount'],keep=False)]

df_dups =df_dups.drop_duplicates(['Date','Amount','Source'],keep=False)

print(df_dups)



    Date  Amount         Dscription            Source

0  5 Jan    5.28        'McDonalds'   'BankOfAmerica'

2  5 Jan    5.28   'McDonalds Rest'             'BoA'

對于沒有重復(基本上拉所有其他行df- df_dup):


no_dups=df.loc[~df.index.isin(df_dups.index)]

print(no_dups)


     Date    Amount      Dscription            Source

1   6 Jan    8.44        'Starbucks'   'BankOfAmerica'

3   5 Jan    5.28   'McDonalds Rest'   'BankOfAmerica'

4  10 Feb   22.72         'Chipolte'           'Chase'


查看完整回答
反對 回復 2021-12-08
?
HUX布斯

TA貢獻1876條經驗 獲得超6個贊

使用存在


select t1.* from table_name t1

where exists( select 1 from table_name t2 

             where t2.date=t1.date and t2.amount=t1.amount and t1.source<>t2.source)


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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