当我不知道我的字段是索引级别还是列时,按索引级别或列过滤

时间:2019-01-25 20:00:55

标签: python pandas dataframe

我有一个带有多个索引级别和多个列的DataFrame。我有一个我知道的字段,它要么是索引级别的名称,要么是列的名称,但是我不知道哪个。我希望在此字段上过滤我的DataFrame。如果该字段是索引级别,则将执行df[df.index.get_level_values(field) == 0],如果该字段是列,则将执行df[df[field] == 0],但是由于我不知道它是哪一个,因此会卡住。有没有办法让大熊猫弄清楚字段名称是在索引中还是在列中,并适当地获取索引/系列?

我知道我可以重设索引然后再将其重新设置,但这似乎很愚蠢,而且如果不是所有索引级别都被命名,则可能会出现问题。

1 个答案:

答案 0 :(得分:0)

由于您提到的是列标签或索引标签,请尝试:

if field in list(df.columns):
   #do df[df[field] == 0]
else:
   #do df[df.index.get_level_values(field) == 0]