如何在应用的函数内引用函数应用到的数据框
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
是应用该函数的数据帧的当前行。
如何在应用的函数中引用应用函数的数据帧。
例如,我有一个名为 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
在接下来的
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
是应用该函数的数据帧的当前行。