我想提取所有数字和字符,而不考虑“V”之后的模式。问题是我不能简单地接受“V”之后的所有内容并包括在内,因为一些街道名称以“V”开头。我尝试了以下方法:df = pd.DataFrame({'X': ['Seasame Street Apt 2 V2575', 'Happy Violet Street Apt 1 V2575B', 'Violet Street Apt 3 V25B75']})
df['Y'] = df['X'].str.extract('(V\/?\d+)')我希望最终输出如下所示:pd.DataFrame({'X': ['Seasame Street Apt 2 V2575', 'Happy Violet Street Apt 1 V2575B', 'Violet Street Apt 3 V25B75'],
'Y': ['V2575', 'V2575B', 'V25B75']})
2 回答
皈依舞
TA贡献1851条经验 获得超3个赞
假设期望V的部分后面总是跟着一个数字:
df["Y"] = df["X"].str.extract("(V\d.+)")
print(df)
输出
X Y
0 Seasame Street Apt 2 V2575 V2575
1 Happy Violet Street Apt 1 V2575B V2575B
2 Violet Street Apt 3 V25B75 V25B75
波斯汪
TA贡献1811条经验 获得超4个赞
另一种使用np.where()
和的方式str.split(' ')
df['Y'] = np.where((df['X'].str.split(' ').str[-1][0][0].lower() == 'v'), df['X'].str.split(' ').str[-1], '')
添加回答
举报
0/150
提交
取消