如何从数据框中的列中输出一定范围的数字?

时间:2018-06-29 03:33:40

标签: python pandas dataframe

我想创建一个循环,该循环将在数据框中提取一个数字或范围,并在找到单​​词后停止分析字符串。

例如:

   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”,它不应读取。

1 个答案:

答案 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