将函数应用于带参数的多个pandas列

2024-04-24 04:43:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我写了以下函数:

def unique_values(df, column):

unique = df[column].unique()
clean = pd.DataFrame.from_dict(unique)
clean.columns = [column]

return clean

我想将以下函数应用于df中的各个列。就像这样:

^{pr2}$

如果我按以下方式添加参数:

 def unique_values(df, *column):

    unique = df[column].unique()
    clean = pd.DataFrame.from_dict(unique)
    clean.columns = [column]

    return clean

然后应用如下函数:

 unique1, unique2, unique3 = unique_values(df, "Column1", "Column2", "Column3")

我得到以下错误:

KeyError: ('Column1', 'Column2', 'Column3')

任何帮助都将不胜感激


Tags: columns函数fromcleandataframedfreturndef
2条回答

您可以编写一个小的包装器函数,该函数使用作为参数传递的列列表来调用unique_values()函数,如下所示:

def df_unique_values(df, *columns):
    return [unique_values(df, x) for x in columns]

此函数返回一个列表,其中包含对不同列的unique_values()的每次调用的结果。按如下方式使用此函数:

^{pr2}$

您可以通过迭代column来完成此操作:

def unique_values(df, *column):
    to_return=[]
    for col in column:
        unique = df[col].unique()
        clean = pd.DataFrame.from_dict(unique)
        clean.columns = [col]
        to_return.append(clean)
    return to_return
# this way this works:
unique1, unique2, unique3 = unique_values(df, "Column1", "Column2", "Column3")

相关问题 更多 >