我有一个名为df
的DataFrame,我想知道列item
是否包含元素a
和c
。
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
答案 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)
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