我有一个带有一些列的df。列表中的条目应基于两列进行过滤/删除重复项:一列仅包含数字,另一列包含混合字符串(字母+数字)和数字。
我想做的是:将第一列中的数字与:
第二列中每个字符串末尾的数字(总是最后X个字符)
第二栏中的数字然后删除重复的条目。
条目在那些列之一中具有信息,否则有一个空字符串。
示例:
Col 1 | Col 2 | Col 3
ABC. | 12345 | ""
DEF. | "" | DEF12345
GHI. | "" | 12345
如您所见,我们有3个不同的条目。我想根据第2列和第3列进行过滤。
非常感谢!
假设您的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