Python - 从df列中删除元组,如果存在于另一个df列中则删除

2024-06-16 10:09:56 发布

您现在位置:Python中文网/ 问答频道 /正文

如果字符串出现在另一个df的列中,我有一个从df列中删除字符串的函数:

df1['col'] = df1['col'][~df1['col'].isin(df2['col'])]

问题是,我现在必须在一列元组上使用这个函数,而这个函数不能处理这些元组。有没有一种方法可以轻松地转换上述函数以适应元组?数据:

df1:                                         df2:
index   col1                                 index      col
0       ('carol.clair', 'mark.taylor')       0          ('james.ray', 'tom.kopeland')
1       ('james.ray', 'tom.kopeland')        1          ('john.grisham', 'huratio.kane')
2       ('andrew.french', 'jack.martin') 
3       ('john.grisham', 'huratio.kane')                                               
4       ('ellis.taylor', 'sam.johnson')      

Desired output:
df1
index      col1
0          ('carol.clair', 'mark.taylor')
1          ('andrew.french', 'jack.martin') 
2          ('ellis.taylor', 'sam.johnson') 

如果首先将列转换为字符串,则该函数可以工作,但是这会在以后的代码中引发错误(我尝试在删除元组后使用.astype(tuple)命令来解决此问题,但是出现了相同的错误):

ValueError: too many values to unpack (expected 2)


Tags: 函数字符串dfindexcolcol1元组df1
1条回答
网友
1楼 · 发布于 2024-06-16 10:09:56

这将为您提供所需的输出:

df1.loc[~df1['col1'].isin(df2['col'])].reset_index(drop=True)
#                           col1
#0    (carol.clair, mark.taylor)
#1  (andrew.french, jack.martin)
#2   (ellis.taylor, sam.johnson)

相关问题 更多 >