Python 3.x python中两个数据帧之间的Wilcoxon秩和检验

Python 3.x python中两个数据帧之间的Wilcoxon秩和检验,python-3.x,pandas,numpy,statistics,scipy.stats,Python 3.x,Pandas,Numpy,Statistics,Scipy.stats,我试图在两个数据帧之间执行Wilcoxon秩和测试。我只想在行之间执行测试。例如,测试应仅在df1(A,1,2,3)和df2(A,10,12,13)中的行1之间进行,在df1(B,4,5,6)和df2(B,14,15,16)中的行2之间进行,依此类推 df1=pd.DataFrame(np.array([['A',1, 2, 3], ['B',4, 5, 6], ['C',7, 8, 9]]), columns=['Details','a', 'b', 'c

我试图在两个数据帧之间执行Wilcoxon秩和测试。我只想在行之间执行测试。例如,测试应仅在df1(A,1,2,3)和df2(A,10,12,13)中的行1之间进行,在df1(B,4,5,6)和df2(B,14,15,16)中的行2之间进行,依此类推

df1=pd.DataFrame(np.array([['A',1, 2, 3], ['B',4, 5, 6], ['C',7, 8, 9]]),
                   columns=['Details','a', 'b', 'c'])

 
df2=pd.DataFrame(np.array([['A',10, 12, 13], ['B',14, 15, 16], ['C',17, 18, 19]]),
                   columns=['Details','a', 'b', 'c'])
这将导致我在数据帧行之间找到一列用于测试的p值

out = pd.DataFrame(np.array([['A',0.05], ['B',0.0002], ['C',1]]),
                   columns=['details','P'])

一种方法是应用for循环,但不幸的是,我的原始数据集中有28000行,这个实验必须重复至少1000次。我想知道是否有人有更好的策略来解决这个问题。非常感谢您事先提供的帮助。

一种计算方法是使用scipy的ranksums

from scipy.stats import ranksums
import pandas as pd


df1=pd.DataFrame(np.array([['A',1, 2, 3], ['B',4, 5, 6], ['C',7, 8, 9]]),
                   columns=['Details','a', 'b', 'c'])

 
df2=pd.DataFrame(np.array([['A',10, 12, 13], ['B',14, 15, 16], ['C',17, 18, 19]]),
                   columns=['Details','a', 'b', 'c'])


a = df1.loc[0,'a':].values.astype(int) #Select the first row
b = df2.loc[0,'a':].values.astype(int) #Select the second row

ranksums(a, b)

你问题的答案很大程度上取决于你用什么来计算Wilcoxon秩和?