pandas聚合lambda函数的名称

6mw9ycah  于 2023-05-15  发布在  其他
关注(0)|答案(1)|浏览(123)

我有一个这样的DF:

df = pd.DataFrame({'col1' : np.random.normal(10, 1, 1000),
                   'col2' : np.random.normal(10, 1, 1000), 
                   'col3' : np.random.normal(10, 1, 1000), })

我想用lambda函数计算df。例如:

df.agg([lambda x: x[-260:].mean() - x[-260:].std(), 
        lambda x: x[-360:].mean() - x[-360:].std(),
        lambda x: x[-100:].mean() - x[-100:].std()]
        )

我得到的结果是:

col1    col2    col3
<lambda>    8.931537    9.150050    9.040931
<lambda>    8.930975    9.112472    9.012097
<lambda>    8.914012    9.169566    8.980311

但如何重命名该行?他们有相同的名字
在agg函数后命名lambda函数

cetgtptt

cetgtptt1#

可以使用命名函数:

def A(x):
    return x[-260:].mean() - x[-260:].std()

def B(x):
    return x[-360:].mean() - x[-360:].std()

def C(x):
    return x[-100:].mean() - x[-100:].std()

df.agg([A, B, C])

否则,只需set_axis

df.agg([lambda x: x[-260:].mean() - x[-260:].std(), 
        lambda x: x[-360:].mean() - x[-360:].std(),
        lambda x: x[-100:].mean() - x[-100:].std()]
      ).set_axis(['A', 'B', 'C'])

输出:

col1      col2      col3
A  9.036280  8.849999  9.030373
B  8.967197  8.834413  9.027176
C  9.027716  8.935721  8.956289

相关问题