试着用我的手制作熊猫多级索引。已经显示了输入和输出的示例。我试着转位,一部一部地阅读,不知道我要去哪里不正确:
输入:
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
发布于 2021-02-15 18:38:07
要匹配您的输出,可以将df.xs与unstack结合使用
df.xs('a',axis=1,level=1,drop_level=False).loc['2016-11-22'].unstack() a
A 3
B 1但是,如果您对单个级别和索引感兴趣,也可以尝试:
df.xs('a',axis=1,level=1).loc['2016-11-22']
A 3
B 1
Name: 2016-11-22, dtype: int64发布于 2021-02-15 18:42:26
试试filter和.loc
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发布于 2021-02-17 22:11:50
我使用日期索引查找行,然后使用元组对选择列,该元组对所有级别为0的列匹配多索引,对于第1级列只使用“a”。
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: int32https://stackoverflow.com/questions/66213481
复制相似问题