在字符串和整数的嵌套/平面列表中查找超过10的最低数字

blablahorse

我正在尝试从嵌套和未嵌套的字符串以及每个项目的整数列表中提取10以上的最低数字。我尝试了一些不同的操作,但是它们要么不返回任何内容,要么返回一些不同的错误消息(预期的字符串或缓冲区,在int和list之间不可能是'>'的两个)。它们需要保持顺序,因为之后它们将被输入到熊猫数据框中。

starting_list = [['4dfg', '12kfmgfg','dfgdf133'],[8, '16dgdfg'], 11, '', 'fdsf']

desired_result = [12, 16, 11, NaN, NaN]

以下是我尝试过的两种不同功能。因为结果将进入数据帧,所以基于熊猫的答案也很好。

def min_int(data):
    for item in range(len(data)):
        for i in range(len(data[item])):
            if type(data[item][i]) == int:
                if data[item][i] >10:
                    data.remove(data[item][i])
            else:
                data[item][i] =int(re.sub(r'\D', "", data[item]))
                if data[item][i] >10:
                    data.remove(data[item][i])
        data[item] = min(data)

def remove_text(data):
    for i in range(len(data)):
        try:
            for ii in range(len(data[i])):
                try:
                    data[i][ii] =int(re.sub(r'\D', "", data[item]))
                except:
                    continue
        except:
            continue 

谢谢!

耶斯列尔

用:

s = pd.Series(data)
a = (pd.to_numeric(s.explode() #explode lists
                     .astype(str) #convert all values to strings
                     .str.replace(r'\D', ''), errors='coerce') #replace and convert to numbers if possible
                     .loc[lambda x: x > 10] #filter values
                     .min(level=0) #get minimal per index
                     .reindex(s.index) #add removed values of index
                     .tolist()) #convert to list

#convert non NaNs to integers
a = [int(x) if x == x else x for x in a]
print (a)
[12, 16, 11, nan, nan]

您的功能应简化:

def try_to_int(x):
    try:
        return int(re.sub(r'\D', "", x))
    except:
        return np.nan

def min_int(x):
    if isinstance(x, int):
        return x
    elif isinstance(x, list):
        gen = (try_to_int(y) for y in x)
        return min(y for y in gen if y == y and y > 10)
    else:
        return try_to_int(x)
        

print ([min_int(x) for x in starting_list])
[12, 16, 11, nan, nan]
    

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在Python3的整数和字符串列表中查找最低编号的索引

试图从字符串中查找值是数字还是整数

使用python查找整数字符串中的奇数对

如何将列表中的数字和字母字符串转换为整数?

使用递归在嵌套列表中查找指定字符串

在Python列表中查找表示数字的连续字符串

从列表中查找最大的数字字符串

如何从由字符串,元组和列表组成的列表中制作平面列表?

从字符串列表中查找包含字符以及字符+数字的组合的字符串

LINQ-在最低和最高字符串之间查找

根据条件连接列表中的字符串和整数

go中的字符串和整数列表?

python中包含整数和字符串的列表

在Python列表中求和字符串和整数

如何检查列表中的整数和字符串

查找和替换列表中的字符串值

高效查找和替换列表中的字符串Python

在列表和字典的字典中查找字符串

高级Python正则表达式:如何从多行字符串中评估和提取嵌套列表和数字?

从文件中查找字符串和字符串的索引到列表中

查找字符串中的数字

查找数字在字符串中的位置

如何编写返回字符串列表中超过10个字符的字符串计数的程序

如何映射字符串列表和整数列表并查找具有最大价值的字符串

python用字符串和整数将嵌套列表大写

查找字符串中的整数个数(不是数字)

检查嵌套列表中的字符串

计算嵌套列表中的字符串

在嵌套列表中拆分字符串