gpt4 book ai didi

python-3.x - Pandas 应用函数 - args 它是如何传递的

转载 作者:行者123 更新时间:2023-12-04 09:35:22 25 4
gpt4 key购买 nike

df = pd.read_csv('https://raw.githubusercontent.com/selva86/datasets/master/Cars93_miss.csv')
d = {'Min.Price': np.nanmean, 'Max.Price': np.nanmedian}
df[['Min.Price', 'Max.Price']] = df[['Min.Price', 'Max.Price']].apply(lambda x, d: x.fillna(d[x.name](x)), args=(d, ))
apply(lambda x, d: x.fillna(d[x.name](x)), args=(d, )) - 我不理解这部分。我知道 apply 和 fillna 是如何工作的,但是使用这个参数很令人困惑。
  • 为什么 args 末尾有逗号
  • d 实际通过了什么 -
  • 最佳答案

    如您所知,df.apply function 将函数应用于 DataFrame 的元素。现在这个函数通常只接受一个参数。当您需要通过 df.apply 使用多参数函数时,您可以使用 args 指定其他参数范围
    来自文档字符串( print(pd.DataFrame.apply.__doc__) )

    args : tuple
    Positional arguments to pass to `func` in addition to the
    array/series.
    在这里,您正在使用带有 lambda x, d: 的两个参数函数因此您需要使用 args= 指定第二个参数.这里期待一个带有参数的元组
    要将单个元素放入元组中,您需要将其放入带有尾随逗号的方括号中。
    print(1)                                                                              
    >>>1
    print((1,))
    >>>(1,)
    把变量 d成元组,你需要做 (d,)字典包含两个单独的函数,用于以列名作为键的两列。所以 x作为传递给 lambda 函数的列, x.name给你列名和 d[x.name]为您提供用于该列名称的函数。然后将该函数应用于该列。
    对于“Min.Price”列,函数为 np.nanmean .所以 d[x.name](x)评估为 np.nanmean(x)这为您提供了不包括 nan 的列均值s。现在您使用平均值来填充 nan s 在原列中做 x.fillna(d[x.name](x))

    关于python-3.x - Pandas 应用函数 - args 它是如何传递的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62618661/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com