比较.apply()熊猫中的多列

时间:2019-09-23 23:41:08

标签: python pandas

我正在尝试编写一个.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)

有人知道我在做什么错吗?

1 个答案:

答案 0 :(得分:0)

transformnp.where可以做什么

df['New']=np.where(df['a']>df.groupby(['a_bins'])['a'].transform('mean'),
                   'Above average',
                   'Below average')