考虑以下数据框示例:
id date hrz tenor 1 2 3 4
AAA 16/03/2010 2 6m 0.54 0.54 0.78 0.19
AAA 30/03/2010 2 6m 0.05 0.67 0.20 0.03
AAA 13/04/2010 2 6m 0.64 0.32 0.13 0.20
AAA 27/04/2010 2 6m 0.99 0.53 0.38 0.97
AAA 11/05/2010 2 6m 0.46 0.90 0.11 0.14
AAA 25/05/2010 2 6m 0.41 0.06 0.96 0.31
AAA 08/06/2010 2 6m 0.19 0.73 0.58 0.80
AAA 22/06/2010 2 6m 0.40 0.95 0.14 0.56
AAA 06/07/2010 2 6m 0.22 0.74 0.85 0.94
AAA 20/07/2010 2 6m 0.34 0.17 0.03 0.77
AAA 03/08/2010 2 6m 0.13 0.32 0.39 0.95
AAA 16/03/2010 2 1y 0.54 0.54 0.78 0.19
AAA 30/03/2010 2 1y 0.05 0.67 0.20 0.03
AAA 13/04/2010 2 1y 0.64 0.32 0.13 0.20
AAA 27/04/2010 2 1y 0.99 0.53 0.38 0.97
AAA 11/05/2010 2 1y 0.46 0.90 0.11 0.14
AAA 25/05/2010 2 1y 0.41 0.06 0.96 0.31
AAA 08/06/2010 2 1y 0.19 0.73 0.58 0.80
AAA 22/06/2010 2 1y 0.40 0.95 0.14 0.56
AAA 06/07/2010 2 1y 0.22 0.74 0.85 0.94
AAA 20/07/2010 2 1y 0.34 0.17 0.03 0.77
AAA 03/08/2010 2 1y 0.13 0.32 0.39 0.95
如何使用grouby
变量id, hrz
并tenor
在不同日期间应用以下自定义函数?
def ks_test(x):
return scipy.stats.kstest(np.sort(x), 'uniform')[0]
def cvm_test(x):
n = len(x)
i = np.arange(1, n + 1)
x = np.sort(x)
w2 = (1 / (12 * n)) + np.sum((x - ((2 * i - 1) / (2 * n))) ** 2)
return w2
所需的输出是以下数据框(图形结果仅为示例):
id hrz tenor test 1 2 3 4
AAA 2 6m ks_test 0.04 0.06 0.02 0.03
AAA 2 6m cvm_test 0.09 0.17 0.03 0.05
AAA 2 1y ks_test 0.04 0.06 0.02 0.03
AAA 2 1y cvm_test 0.09 0.17 0.03 0.05