当使用groupby函数进行分组计算时,如果返回的结果既包含数值又包含datarame时,会抛出报错:
AttributeError: 'int' object has no attribute '_get_axis'
简化的函数如下:
def calc_A(x):
if x['基金内码'].values[0] == '1030000264':
A_stack = np.nan
else:
A_stack = pd.DataFrame([1,2,3])
return A_stack
A = secode_df.groupby(['基金内码']).apply(lambda x: calc_A(x))
原因是 np.nan 被认作是一个浮点数,而不是空,因此需要将np.nan 改为None
def calc_A(x):
if x['基金内码'].values[0] == '1030000264':
A_stack = None
else:
A_stack = pd.DataFrame([1,2,3])
return A_stack
A = secode_df.groupby(['基金内码']).apply(lambda x: calc_A(x))
这样运行就不会报错了。