【问题标题】:Keyerror: "none of [[x,y,z]] are in the [index]"Keyerror:“[[x,y,z]] 中没有一个在 [index] 中”
【发布时间】:2019-06-11 21:01:10
【问题描述】:

我不明白这个错误是从哪里来的。它说索引中没有任何值。但我仔细检查了拼写、语法,一切都与我的同事用于类似分析的同一张表匹配。

我对分析的 pandas/python 方面非常陌生,所以如果您能立即看到答案,请告诉我您是如何找到答案的?我想学习。谢谢!

当我注释掉我在这里显示的最后一行时,一切都会运行 ss_eventtotals_plot.loc[bucket_order].plot(kind='bar')

ss=pd.read_csv('cars_cars_saved_search_data.csv',parse_dates=[0])
ss_eventtotals=ss
ss_eventtotals.loc[ss_eventtotals.index.isin(['saved search|open|srp','saved search|open|nav',
                                              'save search|create start']),'Bucket'] = 'create start' 
ss_eventtotals.loc[ss_eventtotals.index.isin(['saved search|create|srp','saved search|create|nav',
                                              'save search|create success']),'Bucket'] = 'create complete'
ss_eventtotals.loc[ss_eventtotals.index.isin(['save search|create cancel']),'Bucket'] = 'create cancel - Web' 
ss_eventtotals.loc[ss_eventtotals.index.isin(['saved search|delete']),'Bucket'] = 'delete start' 
ss_eventtotals.loc[ss_eventtotals.index.isin(['saved search|delete cancel']),'Bucket'] = 'delete cancel'
ss_eventtotals.loc[ss_eventtotals.index.isin(['saved search|delete success',
                                              'save search|delete success']),'Bucket'] = 'delete complete'
ss_eventtotals.loc[ss_eventtotals.index.isin(['saved search|edit','save search|edit start']),'Bucket'] = 'edit start'
ss_eventtotals.loc[ss_eventtotals.index.isin(['saved search|edit cancel',
                                              'save search|edit cancel']),'Bucket'] = 'edit cancel'
ss_eventtotals.loc[ss_eventtotals.index.isin(['saved search|edit save',
                                              'save search|edit success']),'Bucket'] = 'edit complete'
ss_eventtotals.loc[ss_eventtotals.index.isin(['saved search|view']),'Bucket'] = 'view - App' 
ss_eventtotals.loc[ss_eventtotals.index.isin(['save search|add cancel']),'Bucket'] = 'add cancel - Web' 
ss_eventtotals.loc[ss_eventtotals.index.isin(['saved search|run search']),'Bucket'] = 'run search - App' 
ss_eventtotals.loc[ss_eventtotals.index.isin(['saved search|view']),'Bucket'] = 'search view - App' 
ss_eventtotals2=ss_eventtotals.groupby('Bucket')
ss_eventtotals2=ss_eventtotals2.sum()
ss_eventtotals_plot=ss_eventtotals2.loc[ss_eventtotals2.index.isin(['create start','create complete','delete start','delete complete','edit start','edit complete','view - App','run search - App'])]
bucket_order = ['create start','create complete','delete start','delete complete','edit start','edit complete','view - App','run search - App']
ss_eventtotals_plot.loc[bucket_order].plot(kind='bar')

我希望按照我列出的顺序绘制“桶”

再次,我是新手,我知道这可能只是我的知识差距,非常感谢任何帮助。

如果我需要发布更多代码,请告诉我。

【问题讨论】:

  • 我认为这是因为您错误地调用了loc(最后一行)。尝试放弃 loc 调用以换取直接列选择:ss_eventtotals_plot[bucket_order].plot(...)
  • 我试过了,它给了我类似的错误:KeyError: "['create start' 'create complete' 'delete start' 'delete complete'\n 'edit start' 'edit complete' 'view - App' 'run search - App'] not in index"

标签: python python-3.x pandas jupyter-notebook keyerror


【解决方案1】:

很可能某个地方的错字弄乱了您的索引键,或者您在 groupby().sum() 操作期间丢失了一些。

试试:

missing_keys = [key for key in bucket_order if key not in ss_eventtotals_plot.index]
missing_keys

找出缺少哪些键。

通常你应该使用 Pandas 的“reindex”函数来重新排序索引,它会为丢失的键创建新的索引并用“NaN”填充它们。所以最后一段看起来:

bucket_order = ['create start','create complete','delete start','delete complete','edit start','edit complete','view - App','run search - App']
ss_eventtotals_plot=ss_eventtotals2.reindex([bucket_order])
ss_eventtotals_plot.loc[bucket_order].plot(kind='bar')

【讨论】:

  • 所以我做了你建议的更改,但它返回了这个错误TypeError Traceback (most recent call last) <ipython-input-82-7e3eac0c9a7d> in <module> 1 bucket_order = ['create start','create complete','delete start','delete complete','edit start','edit complete','view - App','run search - App'] ----> 2 ss_eventtotals_plot=ss_eventtotals2.reindex[bucket_order] 3 ss_eventtotals_plot[bucket_order].plot(kind='bar') TypeError: 'method' object is not subscriptable
  • 看起来我还省略了一对括号`ss_eventtotals_plot=ss_eventtotals2.reindex([bucket_order])` 现在可以工作了。感谢您的帮助
猜你喜欢
  • 1970-01-01
  • 2013-02-26
  • 1970-01-01
  • 2018-04-26
  • 2012-01-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-19
相关资源
最近更新 更多