从数据框字符串列中提取特定单词并存储在 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]
我尝试了 .split
和 findall
的不同变体,但无法弄清楚如何获得只有 Over
或 Under
的新列求助啦!
.str
是 pd.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
我有一个 Python 数据框列 Name
谁的元素总是包含名字、姓氏和单词“over”或“under”
例如:Name
= [Michael Johnson Over, Michael Johnson Under, John Smith Over, John Smith Under]
我正在尝试创建一个新列 Name2
,它从 Name
所以对于上面的例子 Name2
= [Over, Under, Over, Under]
我尝试了 .split
和 findall
的不同变体,但无法弄清楚如何获得只有 Over
或 Under
的新列求助啦!
.str
是 pd.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