我想创建一个循环,该循环将在数据框中提取一个数字或范围,并在找到单词后停止分析字符串。
例如:
df['size']=['sz 10-13 of jordan 12', 'size 10 adidas',
'size 11 nike air forece 1', 'sz 6-7 jordan 6sz', ‘brand new Sz 11 jordan 5’]
我需要一个与此类似的功能:
def assignSize(row):
sizeList =[]
for word in sizeList:
if word == 'sz' or word == 'size':
#i do not know what to place here
但是我希望我的输出是:
df['size'] =['10-13','10','11','6-7']
基本上,我希望脚本在找到第一个数字或第一个数字范围后停止读取字符串。因此,在初始大小或sz之后还有另一个“ sz”,它不应读取。
答案 0 :(得分:1)
为什么不仅如此?:
df['size'] = df['size'].apply(lambda x: x.split()[1])
print(df['size'])
输出:
0 10-13
1 10
2 11
3 6-7
Name: size, dtype: object
编辑 :
尝试一下:
import re
df['size']=['sz 10-13 of jordan 12', 'size 10 adidas',
'brand new Sz 13 jordan 5', 'sz 6-7 jordan 6sz']
df['size'] = df['size'].apply(lambda x: '-'.join(re.findall(r'\d+', ' '.join(x.split()[:-1]))))
print(df['size'])
输出:
0 10-13
1 10
2 13
3 6-7
Name: size, dtype: object