代码之家  ›  专栏  ›  技术社区  ›  dzieciou

多栏高效搜索

  •  2
  • dzieciou  · 技术社区  · 4 年前

    我有 DataFrame

    df = pd.DataFrame([
        {
            'name': 'Alexandra',
            'surname': 'Johnson',
            'age': 5
        },
        {
            'name': 'Roland',
            'surname': 'Hawking',
            'age': 3
        }
    ])
    

    df[((df['name']=='Roland') | (df['surname']=='Johnson')) & (df['age'] > 4)]
    

    返回

            name  surname  age
    0  Alexandra  Johnson    5
    

    indexed = df.set_index('name')
    indexed[indexed.index == 'Roland']
    

    对于多个列,我可以使用 MultiIndex

    1 回复  |  直到 4 年前
        1
  •  1
  •   sammywemmy    4 年前

    我不确定你指的是不是这个,所以我要试试看:

    将名称和姓氏设置为索引

    df = df.set_index(['name','surname'])
    

    df.loc[('Alexandra', 'Johnson')]
    
        age    5
    Name: (Alexandra, Johnson), dtype: int64