Python 沿另一个数据帧移动数据帧并映射相关性

Python 沿另一个数据帧移动数据帧并映射相关性,python,pandas,correlation,Python,Pandas,Correlation,我有一个充满了无意义信息(长度=M)的数据集,其中隐藏了我实际查找的数据范围。因为我事先知道“真实数据”部分大致是什么样子,所以我有一个“主数据集”(长度=n,其中n远小于M),我沿着测量的数据集移动它。我使用的逻辑是: 我首先将主数据集与测量数据的前n个元素进行比较 计算相关性 在测量数据集中移动一个元素。将主数据集与测量数据进行比较[1:n+1] 计算相关性 由另一个元素移位。与测量数据的相关性[2:n+2] 等等 这样,我可以通过查找数据与主数据之间的最大相关性来定位数据。以下是我的代码的

我有一个充满了无意义信息(长度=M)的数据集,其中隐藏了我实际查找的数据范围。因为我事先知道“真实数据”部分大致是什么样子,所以我有一个“主数据集”(长度=n,其中n远小于M),我沿着测量的数据集移动它。我使用的逻辑是:

  • 我首先将主数据集与测量数据的前n个元素进行比较
  • 计算相关性
  • 在测量数据集中移动一个元素。将主数据集与测量数据进行比较[1:n+1]
  • 计算相关性
  • 由另一个元素移位。与测量数据的相关性[2:n+2]
  • 等等
  • 这样,我可以通过查找数据与主数据之间的最大相关性来定位数据。以下是我的代码的简化版本:

    a_list = [0,1,2,3,4,5,6,7,8,9,10,9,8,7,6,5,4,3,2,1,0]
    b_list = [6,7,8,7,6]
    a_array = np.array(a_list)
    b_array = np.array(b_list)
    
    a_dataframe = pd.DataFrame(a_array)
    b_dataframe = pd.DataFrame(b_array)
    
    correlations = []
    for i in range (0,len(a_dataframe)-len(b_dataframe)):
        correlations.append(a_dataframe[i:len(b_dataframe)+i].corrwith(b_dataframe)[0])
    
    这段代码工作得很好(尽管在这个例子中出现的相关性是无意义的),它找到了我想要的东西。问题是,每次用循环移动一个元素,并将每个计算出的相关性附加到一个列表中,对我来说似乎是一种非常低效的方法。这一步实际上是我整个软件计算时间的瓶颈之一

    我正在寻找更有效、更优雅、更通情达理的方法来基本上做到这一点。帮忙

    事先非常感谢

    D

    在SCOTT THOPSON的评论后编辑
    我已经纠正了指出的错误。

    在这一行中:correlations.append(a_dataframe[I:len(b_dataframe)+I].corrwith(a_dataframe)[0])那应该是b_dataframe而不是corrwith内部的a_dataframe吗?是的,Scott Boston,你是对的。谢谢你的意见。我在编写简化示例时犯了错误。幸运的是,在最初的程序中,一切都是应该的:)