从数据框字符串列中提取特定单词并存储在 Python 中的新列中

Pulling specific word from dataframe string column and storing in new column in Python

我有一个 Python 数据框列 Name 谁的元素总是包含名字、姓氏和单词“over”或“under”

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

我正在尝试创建一个新列 Name2,它从 Name

中提取“大于”或“小于”

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

我尝试了 .splitfindall 的不同变体,但无法弄清楚如何获得只有 OverUnder 的新列求助啦!

.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

您可以使用Pandas rsplit从末尾开始拆分字符串,并使用n参数将输出中的拆分次数限制为一次。您还可以使用 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