【问题标题】: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

请问我该怎么办?

【问题讨论】:

    标签: python string pandas dataframe contains


    【解决方案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
    

    【讨论】:

      猜你喜欢
      • 2019-04-05
      • 1970-01-01
      • 1970-01-01
      • 2022-12-01
      • 2022-01-19
      • 1970-01-01
      • 2020-06-23
      • 2019-04-24
      • 1970-01-01
      相关资源
      最近更新 更多