是否可以在Python中按列而不是按行执行与一个固定序列的运行关联?
两个月前,我在这里问了一个问题(),我从一位同事那里得到了很大的帮助 我的目标是在大熊猫中与一个固定序列进行运行关联。这可以通过下面的代码实现,该代码按行运行。然而,我的目标是在专栏中这样做。因此,我想对每一列运行相关性测试,而不是逐行测试相关性。感谢您的帮助是否可以在Python中按列而不是按行执行与一个固定序列的运行关联?,python,pandas,scipy,pearson-correlation,scipy.stats,Python,Pandas,Scipy,Pearson Correlation,Scipy.stats,两个月前,我在这里问了一个问题(),我从一位同事那里得到了很大的帮助 我的目标是在大熊猫中与一个固定序列进行运行关联。这可以通过下面的代码实现,该代码按行运行。然而,我的目标是在专栏中这样做。因此,我想对每一列运行相关性测试,而不是逐行测试相关性。感谢您的帮助 #Method to do running correlation rowwise. import pandas as pd from scipy.stats import pearsonr import numpy as np #
#Method to do running correlation rowwise.
import pandas as pd
from scipy.stats import pearsonr
import numpy as np
# running correlation, one fixed series (rows)
df1 = pd.DataFrame([1,3,2,4,5,6,3,4,1,2,3,2,2,3,2,5,1,2,1,2,8,8,8,8,8,8,8])
df2 = pd.DataFrame([1,2,3,2])
CORR_VALS = df2[0].values
def get_correlation(vals):
return pearsonr(vals, CORR_VALS)[0]
df1['correlation'] = df1.rolling(window=len(CORR_VALS)).apply(get_correlation)
然而,我的目标是在专栏中这样做
然后,我的数据将如下所示:
values = {'column1': [7,2,3,1],
'column2': [1,5,2,3],
"column3" : [2,5,2,5]
}
df1 = pd.DataFrame(values)
df2 = pd.DataFrame([2,3,4,3])
print(df1)
column1 column2 column3
0 7 1 2
1 2 5 5
2 3 2 2
3 1 3 5
print(df2)
0
0 2
1 3
2 4
3 3
Out[71]:
0
0 -0.620920
1 0.239046
2 0.000000
我期望的输出如下所示:
values = {'column1': [7,2,3,1],
'column2': [1,5,2,3],
"column3" : [2,5,2,5]
}
df1 = pd.DataFrame(values)
df2 = pd.DataFrame([2,3,4,3])
print(df1)
column1 column2 column3
0 7 1 2
1 2 5 5
2 3 2 2
3 1 3 5
print(df2)
0
0 2
1 3
2 4
3 3
Out[71]:
0
0 -0.620920
1 0.239046
2 0.000000
我猜这可能是由科考夫警长做的。但是,长度自然不匹配。在运行代码之前,你能转换数据帧吗?我的头今天不在工作。。那当然行。。但是,关于如何执行与多个列的运行关联,您有什么想法吗?当您通过
axis=1
应用时,它是否有效?