【问题标题】:PYTHON - .replace functionPYTHON - .replace 函数
【发布时间】:2021-12-23 19:39:45
【问题描述】:

我有一个类似于下面的 DF:

Name Text
Michael 66l additional text
John 55i additional text
Mary 88l additional text

我想做的是“文本”列的第一个字符串中出现“l”的任何地方,然后用“p”替换它

当前代码

DF['Text'] = DF['Text'].replace({"l", "P", 1})

期望的结果

Name Text
Michael 66P additional text
John 55i additional text
Mary 88P additional text

【问题讨论】:

    标签: python regex pandas dataframe replace


    【解决方案1】:

    您可以使用pandas.Series.str.replace 和正则表达式来识别字符串的第一个单词。

    >>> import pandas as pd
    >>>
    >>>
    >>> df
                      Text
    0  66l additional text
    1  55i additional text
    2  88l additional text
    >>>
    >>>
    >>> df['Text'] = df['Text'].str.replace(r"^\w+\b", lambda x: x.group(0).replace("l", "P"), regex=True)
    >>> df
                      Text
    0  66P additional text
    1  55i additional text
    2  88P additional text
    

    【讨论】:

    • @rftr 我相信它现在可以正常工作(在编辑之后),虽然我相信要替换的 l 在第一个单词中只出现一次,因此解决方案可以简单得多。跨度>
    【解决方案2】:

    假设 l 只出现一次(如示例数据框中所示),您可以使用

    df['Text'].str.replace(r'^(\S*)l', r'\1P', regex=True)
    # => 0    66P additional text
    #    1    55i additional text
    #    2    88P additional text
    #    Name: Text, dtype: object
    

    请参阅regex demo详情

    • ^ - 字符串开头
    • (\S*) - 第 1 组:零个或多个空格
    • l - l 字符(字母)。

    替换为\1P,即Group 1值+P字母。

    【讨论】:

      【解决方案3】:

      仅使用您展示的示例,这可以通过使用 Python pandas 的str[range] 功能轻松完成,您展示的 DataFrame 示例请尝试以下代码。

      import pandas as pd
      ##Create your df here....
      df['Text'] = df['Text'].str[:2] + 'P ' + df['Text'].str[4:]
      

      解释:

      • df['Text'].str[:2]:从Text 列的第一个位置(打印)到第三个位置(从0 开始)。
      • + 'P ' +:根据此处 OP 的相关要求,添加/连接 P
      • df['Text'].str[4:]:从 Text 列的第 5 位开始(打印)到此处列值的末尾,并将整个 df['Text'].str[:2] + 'P ' + df['Text'].str[4:] 代码的输出保存到 DataFrame 的 Text 列本身中。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-04-13
        • 1970-01-01
        • 2014-12-28
        • 2020-07-14
        • 1970-01-01
        • 2022-07-18
        • 1970-01-01
        相关资源
        最近更新 更多