经常用pandas读取excel,进行筛选操作,最近竟然遇到了一个坑,真是给自己挖的坑,分享给大家。比如读取这么一个excel
要按照运维筛选。我代码这么写的
df=pd.read_excel(filename)
df.rename(columns={"ops":"运维"})
df=df.loc[df.运维=='张三']
然后就立刻报错了:
这里报错就是 cannot index with multidimensional key
如果 用 df.运维.str.contains(‘张三’) 还会出现另一种报错
报错为 DataFrame object has no attribute ‘str’
这就古怪了 为何 df.y运维成了 dataframe呢?
根子就在这里,我们经过了rename**,形成的df已经有两个叫运维的字段了!**
所以筛选之前,最好做个检查,看看字段是否唯一
比如对运维的字段,需要判断下 df.columns.tolist().count(‘运维’) 是否等于一