python - 如何让字符串列的所有包含匹配项?

标签 python string pandas dataframe contains

让我们以这个小数据框为例:

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

请问我该怎么办?

最佳答案

使用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

关于python - 如何让字符串列的所有包含匹配项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61631826/

相关文章:

python - 为什么 PyYAML 花费这么多时间来解析 YAML 文件?

python - 将 python long/int 转换为固定大小的字节数组

关于特定编译器/平台问题的 C++ null-terminated-string

python - 使用 pandas 将具有相同索引的行中的信息合并到单行中

python - 读取 pandas 中的所有列作为字符串

python - 编写函数通过列表查找最长路径(也许是递归?)

python - 使用 asyncio.wait 在任务异常后重试任务

java - 在 Java 中将(16 进制)字节数组转换为字符串

java - 从具有特定元素的大型集合中查找所有顺序子集

python - 如何舍入/删除 pandas 列中的尾随 ".0"零?