删除或合并pandas dataframe中的多索引列而不丢失d

2024-10-02 12:31:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个由pdblp模块为python创建的数据帧。df包含以日期为索引的价格数据,看起来像一个多索引/两层列(ticker和'PX_LAST')。为了以更简单的方式处理数据,我想去掉子标题“PX_LAST”(我不需要它,它会扰乱我单独执行的一些查找函数)。在

以下是数据帧的外观:

df_px_orig.columns

Out[60]: 
MultiIndex(levels=[['IKH16 Comdty', 'IKM16 Comdty', 'IKU16 Comdty', 'RXH16 Comdty', 'RXM16 Comdty', 'RXU16 Comdty'], ['PX_LAST']],
           labels=[[3, 4, 5, 0, 1, 2], [0, 0, 0, 0, 0, 0]],
           names=['ticker', 'field'])

df_px_orig.head()

Out[41]: 
ticker     RXH16 Comdty RXM16 Comdty RXU16 Comdty IKH16 Comdty IKM16 Comdty  \
field           PX_LAST      PX_LAST      PX_LAST      PX_LAST      PX_LAST   
date                                                                          
2016-01-04       158.79       156.26       155.15       138.28       136.76   
2016-01-05       159.05       156.52       155.42       138.73       137.21   
2016-01-06       159.69       157.15       156.04       139.01       137.49   
2016-01-07       159.18       156.62       155.53       138.18       136.66   
2016-01-08       159.66       157.11       155.98       138.53       137.01   

ticker     IKU16 Comdty  
field           PX_LAST  
date                     
2016-01-04       136.76  
2016-01-05       137.21  
2016-01-06       137.49  
2016-01-07       136.66  
2016-01-08       137.01  

我的问题是建议的方法:

在这里使用列.map():{Pandas: combining header rows of a multiIndex DataFrame}

在这里使用columns.droplevel列():{Delete second row of header in PANDAS}

这两种方法的结果都是一样的-似乎要删除所有数据,而我剩下的新对象只是一个索引:

^{pr2}$

也许我完全误解了这个数据帧的结构,应该使用其他方法,希望能得到帮助。明确地说,我的目标是简单地去掉“PX_LAST”级别,并保持其他所有内容不变。在

非常感谢

编辑:从用于构建数据帧的插件的源代码中添加一些代码:{https://github.com/matthewgilbert/pdblp/blob/master/pdblp/pdblp.py}

^{3}$

Tags: columns数据方法fielddfoutlastticker

热门问题