我试着用另一个专栏的子字符串在熊猫中创建新的专栏。
import pandas as pd
import re
df = {'title':['Apartment 2 roomns, 40 m²', 'House 7 rooms, 183 m²', 'House 4 rooms, 93 m²', 'Apartment 12 rooms, 275 m²']} 我正试图用regex来捕获组:
df['Name'] = df.title.str.extract(r'(^[a-zA-Z]+)', expand=True) 这个我得到了一个很好的结果。但我需要一个有房间数量的栏目(没有“房间”这个词)和另一个没有“平方米”大小的栏目。我试过:
df['Rooms'] = df.title.str.replace(r'(^[0-9]+)\s(rooms)', r'\1') #to capture only the first group, which is the number
df['Size'] = df.title.str.replace(r'(^[0-9]+)\s(m²)', r'\1') #to capture only the first group, which is the number我的产出:
Name Rooms Size
0 Apartment Apartment 2 roomns, 40 m² Apartment 2 roomns, 40 m²
1 House House 7 rooms, 183 m² House 7 rooms, 183 m²
2 House House 4 rooms, 93 m² House 4 rooms, 93 m²
3 Apartment Apartment 12 rooms, 275 m² Apartment 12 rooms, 275 m²良好的产出:
Name Rooms Size
0 Apartment 2 40
1 House 7 183
2 House 4 93
3 Apartment 12 275发布于 2022-07-06 10:22:10
您可以使用
df["Rooms"] = df["title"].str.extract(r'(\d+)\s*room', expand=False)
df['Size'] = df["title"].str.extract(r'(\d+(?:\.\d+)?)\s*m²', expand=False)输出:
>>> df
title Rooms Size
0 Apartment 2 roomns, 40 m² 2 40
1 House 7 rooms, 183 m² 7 183
2 House 4 rooms, 93 m² 4 93
3 Apartment 12 rooms, 275 m² 12 275(\d+)\s*room正则表达式匹配并捕获到Group 1中的一个或多个数字,然后只匹配零或多个空白空间(\s*),然后匹配一个room字符串。
(\d+(?:\.\d+)?)\s*m²正则表达式匹配并捕获一个或多个数字,以及一个.和一个或多个数字的可选字符串,然后匹配零或多个空白空间,然后匹配一个m²字符串。
https://stackoverflow.com/questions/72881782
复制相似问题