Python 查询数据框架中的多索引-特殊索引
我有一个针对多索引数据帧的特定查询,我无法理解如何实现它。不幸的是,不同网站上的各种解释无助于此。工作示例:Python 查询数据框架中的多索引-特殊索引,python,pandas,dataframe,multi-index,Python,Pandas,Dataframe,Multi Index,我有一个针对多索引数据帧的特定查询,我无法理解如何实现它。不幸的是,不同网站上的各种解释无助于此。工作示例: col1 = ['30/01/2021','30/01/2021','31/01/2021','31/01/2021','01/02/2021','01/02/2021'] col2 = ['USD','EUR','USD','EUR','USD','EUR'] col3 = ['3M','1M','1M','3M','3M','6M'] col4 = [0.9,0.95,0.89,0.
col1 = ['30/01/2021','30/01/2021','31/01/2021','31/01/2021','01/02/2021','01/02/2021']
col2 = ['USD','EUR','USD','EUR','USD','EUR']
col3 = ['3M','1M','1M','3M','3M','6M']
col4 = [0.9,0.95,0.89,0.91,0.94,0.92]
df = pd.DataFrame(index = [col1, col2, col3], data = col4, columns = ['Value'])
我现在可以应用“简单”索引,如:
df.loc[:,['USD','EUR'],:]
这将为我提供美元和欧元的所有条目:
Value
30/01/2021 USD 3M 0.90
31/01/2021 USD 1M 0.89
01/02/2021 USD 3M 0.94
30/01/2021 EUR 1M 0.95
31/01/2021 EUR 3M 0.91
01/02/2021 EUR 6M 0.92
或
这将为我提供100万或300万美元和欧元的所有条目:
Value
31/01/2021 USD 1M 0.89
30/01/2021 USD 3M 0.90
01/02/2021 USD 3M 0.94
30/01/2021 EUR 1M 0.95
31/01/2021 EUR 3M 0.91
然而,我实际上想要的是所有条目(货币美元和时间百万)和所有条目(货币欧元和时间百万)
也就是说,我希望有一个结果(日期相同是这个例子的巧合,所以我不能简单地寻找日期)
我怎样才能做到这一点?我尝试了不同版本的元组和列表组合,但如前所述,我无法理解
感谢您的指导。您可以通过两个列表创建
多索引
,然后通过删除原始多索引
的第一级、测试者和筛选,将其与第二级和第三级匹配:
Value
31/01/2021 USD 1M 0.89
30/01/2021 USD 3M 0.90
01/02/2021 USD 3M 0.94
30/01/2021 EUR 1M 0.95
31/01/2021 EUR 3M 0.91
Value
31/01/2021 USD 1M 0.89
31/01/2021 EUR 3M 0.91
a = ['USD','EUR']
b = ['1M','3M']
mux = pd.MultiIndex.from_arrays([a, b])
df = df[df.index.droplevel(0).isin(mux)]
print (df)
Value
31/01/2021 USD 1M 0.89
EUR 3M 0.91