如何在应用的函数内引用函数应用到的数据框

How do I reference the dataframe to which a function is being applied inside the function applied

如何在应用的函数中引用应用函数的数据帧。

例如,我有一个名为 name_df 的数据框。它有 4 列(没有指定索引)。

我有一个名为 calculate_stats 的函数,它接受多个参数(整数值和 df 的混合)。

里面calculate_stats我想参考name_df['name1']name_df['name2']

我做到了:

name_df.apply(calculate_stats, axis=1, args=(r, df,x,y,z))

在 calculate_stats 里面我使用 r['name1']r['name2'].

但是得到一个错误提示 NameError: name 'r' is not defined

在接下来的 中,他们将函数 func1 应用于数据帧 df。引用 df 中每一行的参数指定为 r。所以在 func1 内部,df 的列可以通过使用 r['colname'] 来引用。我如何对我的功能做同样的事情?

In [37]: df
Out[37]:
   X  Y  Count
0  0  1      2
1  0  1      2
2  1  1      2
3  1  0      1
4  1  1      2
5  0  0      1

In [38]: def func1(r):
   ....:     print(r['X'])
   ....:     print(r['Y'])
   ....:     return r
   ....:

您是否尝试过使用 lambda,例如:

 name_df['concat'] = name_df.apply(lambda x: x['name1'] + x['name2'])

x 将作为字典的当前行

当前行将始终是传递给函数的第一个参数,args 中的参数将在其后传递。

如果我理解正确你想做什么,这应该有效:

name_df.apply(calculate_stats, axis=1, args=(df, x, y, z))

这将计算 calculate_stats(r, df, x, y, z),其中 r 是应用该函数的数据帧的当前行。