猿问

在多个条件上查找重复项

我有一组带有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) 中。


幕布斯6054654
浏览 171回答 2
2回答

ITMISS

考虑以下数据(在第 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            Source0   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            Source0  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            Source1   6 Jan    8.44        'Starbucks'   'BankOfAmerica'3   5 Jan    5.28   'McDonalds Rest'   'BankOfAmerica'4  10 Feb   22.72         'Chipolte'           'Chase'

HUX布斯

使用存在select t1.* from table_name t1where exists( select 1 from table_name t2&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;where t2.date=t1.date and t2.amount=t1.amount and t1.source<>t2.source)
随时随地看视频慕课网APP

相关分类

Python
我要回答