如何确定某列的元素是否在另一列中?

时间:2018-09-22 02:31:10

标签: python pandas dataframe

我有一个名为df的DataFrame,我想知道列item是否包含元素ac

import pandas as pd
df=pd.DataFrame({'id':[1,2,3],'item':['a,b,c','c,d,e','a,b']})

Input:

df
    id   item
0   1  a,b,c
1   2  c,d,e
2   3    a,b

在新列contain_a中,1代表列item包含元素a,该元素与列contain_c相同。

Expected:

df
    id   item  contain_a contain_c
0   1  a,b,c          1       1
1   2  c,d,e          0       1
2   3    a,b          1       0

3 个答案:

答案 0 :(得分:4)

有关通用的实现方法,可以使用str.get_dummies指定分隔符

df.item.str.get_dummies(',').add_prefix('contains_')


    contains_a  contains_b  contains_c  contains_d  contains_e
0   1           1           1           0           0
1   0           0           1           1           1
2   1           1           0           0           0

答案 1 :(得分:2)

尝试str.contains()

df['contains_a'] = df.item.str.contains('a').astype(int)

df['contains_c'] = df.item.str.contains('c').astype(int)

>>> df
   id   item  contains_a  contains_c
0   1  a,b,c           1           1
1   2  c,d,e           0           1
2   3    a,b           1           0

或者,您可以循环进行:

to_check = ['a','c']

for i in to_check:
    df[f'contains_{i}'] = df.item.str.contains(i).astype(int)

答案 2 :(得分:1)

function * initialize (fn) { while (true) { yield fn() } } const [obj1, obj2, obj3, obj4, obj5, obj6] = initialize(() => ({})) // all initialized console.log(obj1, obj2, obj3, obj4, obj5, obj6) // all unique console.log(new Set([obj1, obj2, obj3, obj4, obj5, obj6]).size)

pandas.Series.str.findall