如何让一个字符串列的所有包含匹配?

问题描述 投票:3回答:1

让我们来看看这个小数据框。

df = pd.DataFrame(dict(Name=['abc','abcd','bc']))
   Name
0   abc
1  abcd
2    bc

我想创建一个新的数据框: - 它的索引和列名等于列名的值 - 如果索引属于列名,其值等于true或false。

预期的输出。

      abc   abcd  bc
abc   True  True  False
abcd  False True  False
bc    True  True  True

请问我应该怎么做?

python string pandas dataframe contains
1个回答
3
投票

使用 Series.str.contains 在列表理解中,创建面具,并通过以下方式连接在一起 concat,然后设置索引,转置 DataFrame.T 和最后删除索引和列名的方法 DataFrame.rename_axis:

s = df['Name']
L = [s.str.contains(x) for x in s]
df = pd.concat(L, axis=1, keys=s).set_index(s).T.rename_axis(index=None, columns=None)
print (df)
        abc  abcd     bc
abc    True  True  False
abcd  False  True  False
bc     True  True   True
© www.soinside.com 2019 - 2024. All rights reserved.