通过使用Python找出两个擅长其他事务[复制]

问题描述 投票:0回答:1

这个问题已经在这里有一个答案:

我下面有2 Excel中的CSV文件

df1 =  {'Transaction_Name':['SC-001_Homepage', 'SC-002_Homepage', 'SC-001_Signinlink'], 'Count': [1, 0, 2]}
df1 = pd.DataFrame(df1, columns=df1.keys())

df2 =  {'Transaction_Name':['SC-001_Homepage', 'SC-002_Homepage', 'SC-001_Signinlink', 'SC-002_Signinlink'], 'Count': [2, 1, 2, 1]}
df2 = pd.DataFrame(df2, columns=df2.keys())

在DF2我看到有一个叫“SC-002_Signinlink”额外交易这是不存在的DF1。有人可以帮助我如何找到只有那些额外的交易,并将其打印到文件?

到目前为止,我已经在下面所做的工作,以获得交易...

merged_df = pd.merge(df1, df2, on = 'Transaction_Name', suffixes=('_df1', '_df2'), how='outer')
python pandas
1个回答
1
投票

使用指标= true在您的合并:

df1 =  {'Transaction_Name':['SC-001_Homepage', 'SC-002_Homepage', 'SC-001_Signinlink'], 'Count': [1, 0, 2]}
df1 = pd.DataFrame(df1, columns=df1.keys())

df2 =  {'Transaction_Name':['SC-001_Homepage', 'SC-002_Homepage', 'SC-001_Signinlink', 'SC-002_Signinlink'], 'Count': [2, 1, 2, 1]}
df2 = pd.DataFrame(df2, columns=df2.keys())

df = pd.merge(df1, df2, on='Transaction_Name', how='outer', indicator=True)

# As we do not merge on Count, we have 2 count columns (Count_x & Count_y)
# So we create a Count column which is the addition of the 2
df.Count_x = df.Count_x.fillna(0)
df.Count_y = df.Count_y.fillna(0)
print(df.dtypes)

df['Count'] = df.Count_x + df.Count_y

df = df.loc[df._merge != 'both', ['Transaction_Name', 'Count']]
print(df)

# Missing transactions list :
print(df.Transaction_Name.values.tolist())

打印输出(df.dtypes)

Transaction_Name      object
Count_x              float64
Count_y                int64
_merge              category
dtype: object

打印输出(DF)

    Transaction_Name  Count
3  SC-002_Signinlink    1.0

打印输出(df.Transaction_Name.values.tolist())

['SC-002_Signinlink']
© www.soinside.com 2019 - 2024. All rights reserved.