我正在尝试编写一个.apply()函数,该函数将主df的列与单独的df的列进行比较,并返回一个字符串。我想使用apply函数在主df中创建一个新列。代码如下:
def a_by_a(row):
if row.loc['a'] > df.groupby(['a_bins']).mean()['a'][str(row.loc['a_bins'])]:
return "Above average"
else:
return "Below average"
df['a_gby_b'] = df.apply(a_by_a,axis=1)
我正在尝试将列a中的内容与按a_bins分组的平均值进行比较,在其中对数据进行了分箱。运行此代码时,出现此错误:
('bin #1', 'occurred at index 0')
但是,我制作了一个测试函数来尝试有效的[str(row.loc['a_bins'])]
(出现错误的地方):
def test(row):
return str(row.loc['a']) + str(row.loc['bins'])
df.apply(test, axis=1)
有人知道我在做什么错吗?
答案 0 :(得分:0)
transform
和np.where
可以做什么
df['New']=np.where(df['a']>df.groupby(['a_bins'])['a'].transform('mean'),
'Above average',
'Below average')