如何使用 pandas multiIndex 查询多列
Posted
技术标签:
【中文标题】如何使用 pandas multiIndex 查询多列【英文标题】:How to query multiple columns using pandas multiIndex 【发布时间】:2021-09-24 14:08:50 【问题描述】:你知道如何查询第二级(level = 1)的多个列以获取第一级(level = 0)的所有索引吗?
例如: 如何查询 Mustard 和 Ketchup 的所有汉堡?
burgers | double-double | triple | ||||
---|---|---|---|---|---|---|
condiments | ketchup | mustard | relish | ketchup | mustard | relish |
Beep's Burgers | 3 | 3 | 3 | 4 | 5 | 5 |
Roadhouse | 3 | 5 | 2 | 3 | 3 | 2 |
我会很感激的!
【问题讨论】:
【参考方案1】:在列上使用get_level_values()
并应用您的过滤逻辑
df = pd.read_csv(io.StringIO("""burgers double-double triple
condiments ketchup mustard relish ketchup mustard relish
Beep's Burgers 3 3 3 4 5 5
Roadhouse 3 5 2 3 3 2
"""), sep="\t", header=None)
# reconstruct multi-index columns DF...
df1 = df.iloc[2:].rename(columns=0:"burgers").set_index("burgers")
df1.columns = pd.MultiIndex.from_arrays([df.iloc[0,1:].fillna(method="ffill").values, df.iloc[1,1:].values], names=df.iloc[0:2,0])
# get required columns based on condiment
df1.loc[:,df1.columns.get_level_values("condiments").isin(["ketchup","mustard"])]
【讨论】:
以上是关于如何使用 pandas multiIndex 查询多列的主要内容,如果未能解决你的问题,请参考以下文章
pandas - 如何使用 MultiIndex 在 DataFrame 的深层检索最小值索引
使用 MultiIndex 时如何在 Pandas 中使用转换器
Pandas DataFrame - 如何检索 MultiIndex 级别的特定组合
如何更新 MultiIndex pandas DataFrame 的子集