首页 > 解决方案 > 如何从数据框中的列中输出一系列数字?

问题描述

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

例如:

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

标签: pythonpandasdataframe

解决方案


为什么不只是这个?:

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

推荐阅读