我如何从两个不同的列表中删除重复项,一个仅包含int,另一个包含int和str的混合?

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

我有一个带有一些列的df。列表中的条目应基于两列进行过滤/删除重复项:一列仅包含数字,另一列包含混合字符串(字母+数字)和数字。

我想做的是:将第一列中的数字与:

  1. 第二列中每个字符串末尾的数字(总是最后X个字符)

  2. 第二栏中的数字然后删除重复的条目。

条目在那些列之一中具有信息,否则有一个空字符串。

示例:

Col 1 | Col 2 | Col 3

ABC.  | 12345 | ""

DEF.  | ""    | DEF12345

GHI.  | ""    | 12345

如您所见,我们有3个不同的条目。我想根据第2列和第3列进行过滤。

非常感谢!

python list
1个回答
0
投票

假设您的DataFrame是:

df = pd.DataFrame(
    {
        'Col 1':['ABC', 'DEF', 'GHI'],
        'Col 2':[12345, '', ''],
        'Col 3':['','DEF12345', 12345]
    }
)

print(df)

  Col 1  Col 2     Col 3
0   ABC  12345          
1   DEF         DEF12345
2   GHI            12345

您必须构建一个自定义函数来正确解析和转换值,然后将其应用于所需的列。

这里是一个例子:

def str_to_int(val):
    if type(val) is int:
        return val
    elif type(val) is str:
        if val == '':
            return 0 #you have to choose how to deal with this
        else:
            return int(val[3:]) #assuming you have always 3 letters before the number

df['Col 2'] = df['Col 2'].apply(str_to_int)
df['Col 3'] = df['Col 3'].apply(str_to_int)

print(df)

  Col 1  Col 2  Col 3
0   ABC  12345      0
1   DEF      0  12345
2   GHI      0  12345
© www.soinside.com 2019 - 2024. All rights reserved.