如何让字符串列的所有包含匹配项?
Posted
技术标签:
【中文标题】如何让字符串列的所有包含匹配项?【英文标题】:How to have all the contain matches of a string column? 【发布时间】:2020-08-21 05:12:00 【问题描述】:让我们来看看这个小数据框:
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
请问我该怎么办?
【问题讨论】:
【参考方案1】:在列表理解中使用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
【讨论】:
以上是关于如何让字符串列的所有包含匹配项?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 BigQuery SQL 中将字符串列拆分为多行单个单词和单词对?
如何从 Pyspark Dataframe 中的字符串列中过滤字母值?