【问题标题】:ignore KeyError while subsetting pandas dataframe对熊猫数据框进行子集化时忽略 KeyError
【发布时间】:2017-04-25 18:31:51
【问题描述】:

我有一个熊猫数据框 df,其中包含 city1city2city3city4city5 列。我有一个列表my_cities = ["city1","city3","city10"]。我想根据my_cities 中的列对 df 进行子集化。当我这样做时,

my_cities = ["city1","city3","city10"]

df_my_cities = df[my_cities]

我收到错误KeyError: "['city10'] not in index"

如果my_cities 中的元素不在df 中,我如何告诉代码继续执行?

【问题讨论】:

    标签: python pandas error-handling


    【解决方案1】:

    您可以在所有列和list之间使用intersection

    df_my_cities = df[df.columns.intersection(my_cities)]
    

    示例:

    df = pd.DataFrame({'city1':['s', 'e'],
                       'city2':['e','f'],
                       'city3':['f','g'],
                       'city4':['r','g'],
                       'city5':['t','m']})
    
    print (df)
      city1 city2 city3 city4 city5
    0     s     e     f     r     t
    1     e     f     g     g     m
    
    my_cities = ["city1","city3","city10"]
    df_my_cities = df[df.columns.intersection(my_cities)]
    print (df_my_cities)
      city1 city3
    0     s     f
    1     e     g
    

    或者numpy.intersect1d:

    df_my_cities = df[np.intersect1d(df.columns, my_cities)]
    print (df_my_cities)
      city1 city3
    0     s     f
    1     e     g
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-08-16
      • 1970-01-01
      • 2016-04-26
      • 1970-01-01
      • 2022-11-18
      • 2018-06-30
      • 2016-03-28
      相关资源
      最近更新 更多