【问题标题】:Pulling specific word from dataframe string column and storing in new column in Python从数据框字符串列中提取特定单词并存储在 Python 的新列中
【发布时间】:2022-01-05 14:30:45
【问题描述】:

我有一个 Python 数据框列 Name,其元素始终包含名字、姓氏和单词“over”或“under”

例如:Name = [Michael Johnson Over, Michael Johnson Under, John Smith Over, John Smith Under]

我正在尝试创建一个新列 Name2,它从 Name 中提取“Over”或“Under”

所以对于上面的例子Name2 = [Over, Under, Over, Under]

我尝试了.splitfindall 的不同变体,但不知道如何获得一个只有OverUnder 的新列,请帮助!

【问题讨论】:

    标签: python pandas string dataframe split


    【解决方案1】:

    .strpd.Series 上的一个属性,它公开了字符串解析功能,例如.contains。您可以使用布尔索引设置一个新列,条件是"Name" 中的行是否包含关键字"Over""Under"

    import pandas as pd
    df = pd.DataFrame(
        {
            "Name": [
                "Michael Johnson Over",
                "Michael Johnson Under",
                "John Smith Over",
                "John Smith Under"
            ],
        }
    )
    
    df["Name2"] = None
    df["Name2"][df["Name"].str.contains("Over")] = "Over"
    df["Name2"][df["Name"].str.contains("Under")] = "Under"
    print(df)
    

    输出

        Name                    Name2
    0   Michael Johnson Over    Over
    1   Michael Johnson Under   Under
    2   John Smith Over         Over
    3   John Smith Under        Under
    

    【讨论】:

    • 这很好用!谢谢!有没有办法将“Over”或“Under”之前的名称提取到另一个新列中?
    • 是的,df["Name3"] = None df["Name3"][over_mask] = df["Name"][over_mask].str.slice(0, -4) df["Name3"][under_mask] = df["Name"][under_mask].str.slice(0, -5)
    【解决方案2】:

    您可以使用 Pandas rsplit 从末尾拆分字符串,并使用 n 参数将输出中的拆分数限制为 1。您还可以使用expand=True 将字符串拆分为单独的列。

    df[['First_Last','Name2']] = df['Name'].str.rsplit(' ', n=1, expand=True)
    

    输出

                        Name       First_Last  Name2
    0   Michael Johnson Over  Michael Johnson   Over
    1  Michael Johnson Under  Michael Johnson  Under
    2        John Smith Over       John Smith   Over
    3       John Smith Under       John Smith  Under
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-02-10
      • 1970-01-01
      • 1970-01-01
      • 2018-06-07
      • 1970-01-01
      • 2023-01-21
      • 2021-07-10
      • 2021-05-31
      相关资源
      最近更新 更多