在Python Pandas->字符串列表中查找两列的交集

2024-04-19 05:20:53 发布

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

我想计算A列和B列有多少实例相交。 A列和B列中的行是字符串列表。 例如,A列可以包含[汽车、乘客、卡车],B列可以包含[汽车、房屋、花卉、卡车]。因为在这种情况下,两个字符串重叠,所以C列应该显示->;2

我试过(这些作品都没有):

df['unique'] = np.unique(frame[['colA', 'colB']])

或者

def unique(colA, colB):
    unique1 = list(set(colA) & set(colB))
    return unique1

df['unique'] = df.apply(unique, args=(df['colA'], frame['colB']))

TypeError:(“unique()接受2个位置参数,但给定了3个,”“在索引项目中发生”)


Tags: 实例字符串df列表frame汽车uniqueset
1条回答
网友
1楼 · 发布于 2024-04-19 05:20:53

我相信在列表理解中需要length^{}

df['C'] = [len(set(a).intersection(b)) for a, b in zip(df.A, df.B)]

或:

df['C'] = [len(set(a) & set(b)) for a, b in zip(df.A, df.B)]

样本

df = pd.DataFrame(data={'A':[['car', 'passenger', 'truck'], ['car', 'truck']],
                        'B':[['car', 'house', 'flower', 'truck'], ['car', 'house']]})
print (df)
                         A                            B
0  [car, passenger, truck]  [car, house, flower, truck]
1             [car, truck]                 [car, house]

df['C'] = [len(set(a).intersection(b)) for a, b in zip(df.A, df.B)]
print (df)
                         A                            B  C
0  [car, passenger, truck]  [car, house, flower, truck]  2
1             [car, truck]                 [car, house]  1

相关问题 更多 >