Pandas .loc without KeyError

前端 未结 5 2213
南方客
南方客 2020-12-17 23:57
>>> pd.DataFrame([1], index=[\'1\']).loc[\'2\']  # KeyError
>>> pd.DataFrame([1], index=[\'1\']).loc[[\'2\']]  # KeyError
>>> pd.DataFrame         


        
5条回答
  •  执念已碎
    2020-12-18 00:10

    Using the sample dataframe from @binjip's answer:

    import numpy as np
    import pandas as pd
    
    # Create dataframe
    data = {'distance': [0, 300, 600, 1000],
            'population': [4.8, 0.7, 6.4, 2.9]}
    df = pd.DataFrame(data, index=['Alabama','Alaska','Arizona','Arkansas'])
    
    keys = ['Alabama', 'Alaska', 'Arizona', 'Virginia']
    
    

    Get matching records from the dataframe. NB: The dataframe index must be unique for this to work!

    df.reindex(keys)
    
              distance  population
    Alabama        0.0         4.8
    Alaska       300.0         0.7
    Arizona      600.0         6.4
    Virginia       NaN         NaN
    

    If you want to omit missing keys:

    df.reindex(df.index.intersection(keys))
    
             distance  population
    Alabama         0         4.8
    Alaska        300         0.7
    Arizona       600         6.4
    

提交回复
热议问题