Pandas DataFrame列与自定义函数的成对关联

时间:2013-08-14 14:25:58

标签: python pandas correlation

DataFrame上的Pandas pairwise correlation在很多情况下都很方便。但是,在我的具体情况下,我想使用Pandas不提供的方法(除了(pearson,kendall或spearman)之外的其他方法来关联两列。是否可以明确定义在这种情况下使用的相关函数?

我想要的语法如下:

def my_method(x,y): return something
frame.corr(method=my_method)

2 个答案:

答案 0 :(得分:1)

你需要在cython中为任何类型的perf(具有cythonizable函数)执行此操作

l = len(df.columns)
results = np.zeros((l,l))
for i, ac in enumerate(df):
    for j, bc in enumerate(df):
           results[j,i] = func(ac,bc)
results = DataFrame(results,index=df.columns,columns=df.columns)

答案 1 :(得分:0)

查看有关DataFrame.corr()的文档

Parameters
----------
    method : {'pearson', 'kendall', 'spearman'} or callable
        * pearson : standard correlation coefficient
        * kendall : Kendall Tau correlation coefficient
        * spearman : Spearman rank correlation
        * callable: callable with input two 1d ndarrays
            and returning a float. Note that the returned matrix from corr
            will have 1 along the diagonals and will be symmetric
            regardless of the callable's behavior
            .. versionadded:: 0.24.0

还要签出DataFrame.corrwith()

警告:这将计算一个对称相关矩阵,例如CramrsV,但此方法不适用于TheilsU和其他不对称corr矩阵。