pandas 如何解决此无重复的2列计算?

2w2cym1i  于 2022-11-27  发布在  其他
关注(0)|答案(2)|浏览(133)

大家好,StackOverflow!我在这里遇到了一些麻烦,我做了一些研究,但我仍然不能做到这一点。我有两列是从数据集中减去的,这两列是“# Externo”和“Nro Envio ML”。
我希望代码的结果只给我“# Externo”中存在的数字,而不是“Nro Envio ML”中的数字
例如:

如果41765931626仅在“# Externo”列中,但不在“Nro Envio ML”中,我想打印该编号。此外,如果“# Externo”中不存在任何不在“Nro Envio ML”中的编号,我想打印一些文本(“无陌生销售”)
这是我试过的代码,抱歉我的英语不好

import numpy as np
df2=df2.dropna(subset=['Unnamed: 13'])
df2 = df2[df2['Unnamed: 13'] != 'Nro. Envío']
df2['Nro Envio ML']=df2['Unnamed: 13']

dfn=df2[["# Externo","Nro Envio ML"]]

dfn1 = dfn[dfn['# Externo'] != dfn['Nro Envio ML']]
dfn1

也可以使用diff,它提供了'Nro Envio ML'上值

示例链接:https://github.com/francoveracallorda/sample

6uxekuva

6uxekuva1#

我会在panda之外使用set中内置的python来计算差异。

import pandas as pd

df = pd.DataFrame({
    "# Externo": [3, 5, 4, 2, 1, 7, 8],
    "Nro Envio ML": [4, 9, 0, 2, 1, 3, 5]
})

diff = set(df["# Externo"]) - set(df["Nro Envio ML"])
# diff contains the values that are in df["# Externo"] but not in df["Nro Envio ML"].

print(f"Weird sales: {diff}" if diff else "No strange sales")
# Output:
# Weird sales: {8, 7}

PS:如果你想呆在Pandas里面,你可以用diff = df.loc[~df["# Externo"].isin(df["Nro Envio ML"]), "# Externo"]来计算安全差作为一个pd.Series

bihw5rsg

bihw5rsg2#

您可以使用Pandas的~isin

series1 = pd.Series([2, 4, 8, 20, 10, 47, 99])
series2= pd.Series([1, 3, 6, 4, 10, 99, 50])
series3 = pd.Series([2, 4, 8, 20, 10, 47, 99])
df = pd.concat([series1, series2,series3], axis=1)

情况1:序列1中的数字,但序列2中的数字不存在

diff = series1[~series1.isin(series2)]

案例2:序列1中没有任何数字,序列2中没有任何数字

same = series1[~series1.isin(series3)]

相关问题