Python 将自定义函数应用于pandas中的列表列,如何处理异常?

Python 将自定义函数应用于pandas中的列表列,如何处理异常?,python,pandas,dataframe,Python,Pandas,Dataframe,我有一个15000条记录的数据框,其中有一个文本列(列名=clean)作为列表,请参考下面的内容 我需要在每行中找到最小值,并将其添加为名为min的新列 def find_min(x): x = min(x) return(x) 我试图传递上述函数 df1['min'] = df1['clean'].map(find_min) 低于误差 ValueError:min()参数是空序列 似乎有一个空列表,如何解决这个问题,因为我有15000条记录 请告知因为我们有一个列

我有一个15000条记录的数据框,其中有一个文本列(列名=clean)作为列表,请参考下面的内容

我需要在每行中找到最小值,并将其添加为名为min的新列


def find_min(x):
    x = min(x)
    return(x)

我试图传递上述函数


df1['min'] = df1['clean'].map(find_min)

低于误差

ValueError:min()参数是空序列

似乎有一个空列表,如何解决这个问题,因为我有15000条记录
请告知

因为我们有一个列列表,让我们尝试使用try/except(EAFP模式)处理函数中的错误:


另一种方法是跳过函数并定义此内联:

df1['min'] = df1['clean'].map(lambda x: min(x) if len(x) else np.nan)

您还可以使用列表理解来完成此操作,这非常快:

df1['min'] = [find_min(x) for x in df1['clean']]
或者


您的函数名为
min
,因此您无法再访问当前作用域中的内置min函数。尝试重命名外部函数。顺便说一句,您可以只执行
df1['clean'].map(min)
,而不必定义min函数。1:已经有一个名为
min
的内置函数。2:您正在覆盖它。3:您正在从函数本身内部调用
min(x)
,导致无限递归。@cs95。我试过了。获取此错误“ValueError:min()arg是一个空序列”。我在pd.series中的列的类型。这有点道理,如果列表为空,那么min([])就没有意义。顺便说一句,这是一个不同的问题,从目前被问,所以也许更新您的帖子。
df1['min'] = [find_min(x) for x in df1['clean']]
df1['min'] = [min(x) if len(x) else np.nan for x in df1['clean']]