创建一个日终对账流程,以确保在工作日结束时没有离群值。这有点复杂,因为我需要将多个框相互比较,只留下不重复的值(aka outliers).我试图比较df 1到/从df 2.还试图比较df 1到/从df 3.所有三个嵌套有两列:ID,来源。ID列由不同的特征组成,例如金额(负数或正数),9位数和人。具有正负金额的示例如下所示:20_777666333_bob或-1000_932143097_john。
范例:如果我正在比较df 1和df 2。如果df 1在ID列= 20_777666333_bob中有一个值,而df 2在ID列= 20_777666333_bob中没有匹配的值,那么我希望离群值在它自己的框架中返回为20_777666333_bob,我稍后将使用它来填充电子邮件。
下面是我正在努力的当前逻辑。如果有人知道为什么它返回所有重复而没有异常值,那将是非常有帮助的。此外,如果有人有一个不同的编码想法,我洗耳恭听。谢谢你的时间。
# List of dataframes
dataframes = [df1, df2, df3]
# Iterate through dataframes and drop duplicates
for i, df in enumerate(dataframes, start=1):
dataframes[i-1] = df.drop_duplicates(subset='ID')
# Display the updated dataframes
for i, df in enumerate(dataframes, start=1):
print(f"DataFrame {i} after dropping duplicates:")
print(df)
print()
字符串
更新后的文章更好的例子,以帮助回答我的问题。
“”df1 = pd.DataFrame({“ID”:[20_777666333_bob,-1000_932143097_john,-5_987443211_jane],“Source”:[“A”]})df2 = pd.DataFrame({“ID”:[440_098742123_jim,680_715355572_bill,20_777666333_bob],“Source”:[“B”]})df3 = pd.DataFrame({“ID”:[680_715355572_bill,-1000_932143097_john,-900_976165534_sean],“Source”:[“C”]})
x = pd.concat([df1,df2,df3]).drop_duplicates(subset='ID',keep=False)
'''
我希望我的outlier rame(x)有3个outliers:
- ID =-5_987443211_jane,源A
- ID = 440_098742123_jim,源B
- ID =-900_976165534_sean,源C
目前,当我使用上述逻辑时,我仍然看到离群值,而我希望不会。这可能与ID列的数据类型有关吗?当我concat它们时,df 1,df 2和df 3都转向ID列的datatype = object,但在我concat它们之前,df 1 = object,df 2 = string和df 3 = string。
1条答案
按热度按时间gblwokeq1#
这里有一个解决方案可能对您有用,它涉及到合并多个嵌套框并删除正确合并的行。
字符串