首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >解析Pandas中的多级标头

解析Pandas中的多级标头
EN

Stack Overflow用户
提问于 2021-02-15 18:30:40
回答 3查看 35关注 0票数 0

试着用我的手制作熊猫多级索引。已经显示了输入和输出的示例。我试着转位,一部一部地阅读,不知道我要去哪里不正确:

输入:

代码语言:javascript
复制
import pandas as pd
import numpy as np
df = pd.DataFrame(index=['2016-11-21', '2016-11-22', '2016-11-23', '2016-11-24', '2016-11-25'],
                  columns=pd.MultiIndex.from_product([list('AB'), list('ab')]),
                  data=np.array([[2,3,5,6,6], [1,4,2,3,3], [3,1,1,1,0], [0,0,6,5,2]]).T)
print (df)
            A     B   
            a  b  a  b
2016-11-21  2  1  3  0
2016-11-22  3  4  1  0
2016-11-23  5  2  1  6
2016-11-24  6  3  1  5
2016-11-25  6  3  0  2

期望输出:我需要获得A和B两列的“2016-11-22”的值

a A 3 B 1

EN

回答 3

Stack Overflow用户

发布于 2021-02-15 18:38:07

要匹配您的输出,可以将df.xsunstack结合使用

代码语言:javascript
复制
df.xs('a',axis=1,level=1,drop_level=False).loc['2016-11-22'].unstack()

代码语言:javascript
复制
   a
A  3
B  1

但是,如果您对单个级别和索引感兴趣,也可以尝试:

代码语言:javascript
复制
df.xs('a',axis=1,level=1).loc['2016-11-22']

A    3
B    1
Name: 2016-11-22, dtype: int64
票数 1
EN

Stack Overflow用户

发布于 2021-02-15 18:42:26

试试filter.loc

代码语言:javascript
复制
df.filter(like='2016-11-22',axis=0).loc[:,df.columns.get_level_values(1).isin(['a'])].stack(0)


          a
2016-11-22 A  3
           B  1
票数 1
EN

Stack Overflow用户

发布于 2021-02-17 22:11:50

我使用日期索引查找行,然后使用元组对选择列,该元组对所有级别为0的列匹配多索引,对于第1级列只使用“a”。

代码语言:javascript
复制
df = pd.DataFrame(index=['2016-11-21', '2016-11-22', '2016-11-23', '2016-11-24', '2016-11-25'],
              columns=pd.MultiIndex.from_product([list('AB'), list('ab')]),
              data=np.array([[2,3,5,6,6], [1,4,2,3,3], [3,1,1,1,0], [0,0,6,5,2]]).T)

 columns=df.columns.levels[0]
 print(df.loc['2016-11-22',(columns,'a')])

 output:
 A  a    3
 B  a    1
 Name: 2016-11-22, dtype: int32
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66213481

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档