首页 > 解决方案 > 如何使用一个数据框的索引在熊猫中重新索引另一个数据框

问题描述

我很抱歉,我真的不知道我应该使用什么标题。但这是我的问题

Stocks_Open
               d-1           d-2         d-3          d-4
000001.HR  1817.670960  1808.937405  1796.928768  1804.570628  
000002.ZH  4867.910878  4652.713598  4652.713598  4634.904168 
000004.HD    92.046474    92.209029    89.526880    96.435445   
000005.SS    28.822245    28.636893    28.358865    28.729569  
000006.SH   192.362963   189.174626   185.986290   187.403328   
000007.SH    79.190528    80.515892    81.509916    78.693516   
Stocks_Volume
               d-1           d-2         d-3          d-4
000001.HR    324234         345345      657546       234234  
000002.ZH    4867343        465234      4652598      4634168 
000004.HD    9246474        929029      826880       965445   
000005.SS    2822245        2836893     2858865      2829569  
000006.SH    19262963       1897466    1886290      183328   
000007.SH    7190528        803892      809916       7693516   

以上是我从数据库中解析出来的数据,我真正想做的是获取每只股票在 4 天内的开盘价和成交量的相关性(第一列由不同股票的代码组成)。换句话说,我正在尝试计算每个 DataFrame 的相应行的相关性。(这只是一个简化的例子,真实数据应该扩展到1000多个不同的股票。)

我的尝试是创建一个数据框并运行一个循环,将结果分配给该数据框。但这里有一个问题,即创建的数据帧的索引不是我想要的。当我尝试附加相关列时,出现了错误。(请忽略correlation的值,这里是我炮制的,只是举个例子)

r = pd.DataFrame(index = range(6),columns = ['c']
        
        for i in range(6):
            r.iloc[i-1,:] = Stocks_Open.iloc[i-1].corr(Stocks_Volume.iloc[i-1])

        Correlation_in_4days = pd.concat([Stocks_Open,Stocks_Volume], axis = 1)
        Correlation_in_4days['corr'] = r['c']
        for i in range(6):
            Correlation_in_4days.iloc[i-1,8] = r.iloc[i-1,:]


r     c
1   0.654  
2  -0.454
3   0.3321   
4   0.2166   
5   -0.8772   
6    0.3256

错误发生了。

"ValueError: Incompatible indexer with Series"

我意识到我的相关数据框的索引是整数而不是股票代码,但我不知道如何修复它,有什么帮助吗?我的理想结果是:

             corr 
000001.HR    0.654
000002.ZH    -0.454
000004.HD    0.3321  
000005.SS    0.2166
000006.SH    -0.8772
000007.SH    0.3256

标签: pythonpandas

解决方案


尝试分配index背面

r.index = Stocks_Open.index

推荐阅读