当前位置: 首页 > 面试题库 >

在新的多索引级别下串联pandas列

元俊雅
2023-03-14
问题内容

给定一个数据帧字典,例如:

dict = {'ABC': df1, 'XYZ' : df2}   # of any length...

其中每个数据框具有相同的列和相似的索引,例如:

data           Open     High      Low    Close   Volume
Date                                                   
2002-01-17  0.18077  0.18800  0.16993  0.18439  1720833
2002-01-18  0.18439  0.21331  0.18077  0.19523  2027866
2002-01-21  0.19523  0.20970  0.19162  0.20608   771149

最简单的方法是将所有数据帧组合成一个,并具有如下所示的多索引:

symbol         ABC                                       XYZ
data           Open     High      Low    Close   Volume  Open ...
Date                                                   
2002-01-17  0.18077  0.18800  0.16993  0.18439  1720833  ...
2002-01-18  0.18439  0.21331  0.18077  0.19523  2027866  ...
2002-01-21  0.19523  0.20970  0.19162  0.20608   771149  ...

我尝试了几种方法-例如,对于每个数据框,使用多索引之类替换列,.from_product(['ABC', columns])然后将其串联axis=1,但没有成功。


问题答案:

您可以使用concatkeys参数将创建层次结构列索引)执行此操作:

d = {'ABC' : df1, 'XYZ' : df2}
print pd.concat(d.values(), axis=1, keys=d.keys())


                XYZ                                          ABC           \
               Open     High      Low    Close   Volume     Open     High   
Date                                                                        
2002-01-17  0.18077  0.18800  0.16993  0.18439  1720833  0.18077  0.18800   
2002-01-18  0.18439  0.21331  0.18077  0.19523  2027866  0.18439  0.21331   
2002-01-21  0.19523  0.20970  0.19162  0.20608   771149  0.19523  0.20970


                Low    Close   Volume  
Date                                   
2002-01-17  0.16993  0.18439  1720833  
2002-01-18  0.18077  0.19523  2027866  
2002-01-21  0.19162  0.20608   771149

确实需要concat列表,因此以下等效:

print(pd.concat([df1, df2], axis=1, keys=['ABC', 'XYZ']))


 类似资料:
  • 问题内容: 我有一个问题,我通过沿行轴串联(垂直堆叠)来生成熊猫数据框。 每个组成数据帧都有一个自动生成的索引(升序编号)。 串联后,我的索引被搞砸了:它的计数最多为n(其中n是相应数据帧的shape [0]),并在下一个数据帧从零重新开始。 我正在尝试“根据给定的当前顺序重新计算索引”或“重新索引”(或者我认为)。事实证明,这似乎并没有在做。 这是我尝试做的事情: 它失败并显示“无法从重复的轴重

  • 这是我的数据库的简化版本。 我正在尝试选择2016年B列中的值为零的所有商店。所以在这种情况下,我希望选择商店A和C。 仅选择 B = 0 的各个行。而我想要的是选择这个 提前感谢帮助或建议。

  • 现在,我要检索一个值: Q1:在[3.3,6.6]范围内-预期返回值:[3.3,5.5,6.6]或[3.3,3.3,5.5,6.6](包括最后一个),如果没有,则为[3.3,5.5]或[3.3,3.3,5.5]。 Q2:在[2.0,4.0]范围内-预期返回值:[3.3]或[3.3,3.3] 对于任何其他多索引维度都是相同的,例如B值: Q3:在范围[111,500]中有重复,作为范围中的数据行数-

  • 我有一个多索引的,其名称附加到列级别。我希望能够轻松地对列进行无序排列,以便它们与用户指定的顺序相匹配。由于这是管道,我无法使用此推荐的解决方案,并在创建时正确订购它们。 我有一个数据表,看起来像 我想采取这样的列表并重新排序: 附带一个警告,我并不总是知道“实验”会是什么水平。我试过(其中是上图的多索引框架) 但是这似乎不起作用——它成功地完成了,但是返回的数据帧的列顺序没有改变。 我的解决方法

  • 问题内容: 我在pandas df中有一个包含多索引列的数据集,我想按特定列中的值进行排序。我尝试使用sortindex和sortlevel,但无法获得所需的结果。我的数据集看起来像: 我想按降序按组1中的C列对所有数据和索引进行排序,因此我的结果如下所示: 是否可以对数据所在的结构进行这种排序,还是应该将Group1交换到索引端? 问题答案: 当按MultiIndex排序时,您需要在列表中包含描

  • 如果我定义一个像这样的分层索引数据框: 内容如下所示: 我知道如何提取与给定列对应的数据。例如。对于列: 如何提取符合以下标准集的数据: , , , column , , 列 和 、、列、以及从开始的所有列 是偶数 (顺便说一句,我做了不止一次rtfm,但我真的觉得难以理解。)