Python 向量化分割字符串

3
我想使用向量化来创建一个 pandas 数据框中的列,该列检索每行中在“_”上拆分的字符串的第二/最后一部分。我尝试了以下代码:
df = pd.DataFrame()

df['Var1'] = ["test1_test2","test3_test4"]
df['Var2'] = [[df['Var1'].str.split('_')][0]][0]
df

           Var1  Var2
0   test1_test2 test3
1   test3_test4 test4

这显然是不正确的,因为我应该在列Var2的行0和1中分别得到test2和test4。

3个回答

1
一种选择是使用str.extract函数:
df['Var2'] = df['Var1'].str.extract("_([^_]+)$")
print(df)

输出

          Var1   Var2
0  test1_test2  test2
1  test3_test4  test4

正则表达式"_([^_]+)$"匹配最后一个分割。


1
使用.str.split('_')方法和.str[-1]来获取列中每个字符串的第二个/最后一个部分。
以下是更新后的代码:
import pandas as pd

df = pd.DataFrame()

df['Var1'] = ["test1_test2", "test3_test4"]
df['Var2'] = df['Var1'].str.split('_').str[-1]

print(df)

输出:

          Var1   Var2
0  test1_test2  test2
1  test3_test4  test4

在上述代码中,df['Var1'].str.split('_') 通过 '_' 分隔符拆分 'Var1' 列中的每个字符串,.str[-1] 选择每行拆分后字符串的最后一部分。

1
你可以使用apply()函数:
df["Var2"] = df['Var1'].apply(lambda x: x.split("_")[-1])

df 输出:

          Var1   Var2
0  test1_test2  test2
1  test3_test4  test4

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接