我有一个关于<code>df之间的区别的问题。loc和测向。对于具有多索引的数据帧,在
处。我一直在查看stackoverflow中的一些精彩资源,但它似乎没有阐明我的问题。特别是这一个……熊猫。at vs.loc(或者至少我不完全理解这里展示的是什么)。
根据熊猫留档,https://pandas-docs.github.io/pandas-docs-travis/generated/pandas.DataFrame.at.html,df.at
应该返回奇异值,它比df.loc
快,所以我倾向于使用df.at
。让我展示一下我的困惑,因为它适用于将df.at
与MultiIndex一起使用。
我有以下数据框架:
df = pd.DataFrame({'field1':['foo']*6, 'field2':['bar']*6, 'field3':
['a','a','b','b','b','c'],'value1':[0.4,0.5,0.4,0.7,.9,.4],'value2':
[4000,4000,9000,9000,9000,10000]}, index=range(6))
df
Out[329]:
field1 field2 field3 value1 value2
0 foo bar a 0.4 4000
1 foo bar a 0.5 4000
2 foo bar b 0.4 9000
3 foo bar b 0.7 9000
4 foo bar b 0.9 9000
5 foo bar c 0.4 10000
我想使用MultiIndex访问此数据帧,因此我正在执行以下操作:
df = df.set_index(['field1','field2','field3'])
所以现在我想在我的df
中访问value e1
at('foo','bar','c')
这是一个奇异值,它错误。
df.at[('foo','bar','c'),'value1']
Traceback (most recent call last):
File "<ipython-input-344-921b8b658a49>", line 1, in <module>
df.at[('foo','bar','c'),'value1']
File "C:\Anaconda2\lib\site-packages\pandas\core\indexing.py", line 1610,
in __getitem__
return self.obj.get_value(*key, takeable=self._takeable)
File "C:\Anaconda2\lib\site-packages\pandas\core\frame.py", line 1836, in
get_value
return engine.get_value(series.get_values(), index)
File "pandas\index.pyx", line 103, in pandas.index.IndexEngine.get_value
(pandas\index.c:3234)
File "pandas\index.pyx", line 111, in pandas.index.IndexEngine.get_value
(pandas\index.c:2931)
File "pandas\index.pyx", line 152, in pandas.index.IndexEngine.get_loc
(pandas\index.c:3830)
File "pandas\index.pyx", line 170, in
pandas.index.IndexEngine._get_loc_duplicates (pandas\index.c:4154)
TypeError: only integer arrays with one element can be converted to an index
我假设这是返回一个序列对象,它不能用单个值表示?这只是我的假设,给定df.loc
的输出。
df.loc[('foo','bar','c')]['value1']
Out[345]:
field1 field2 field3
foo bar c 0.4
Name: value1, dtype: float64
如果我没有使用多索引,我想这个问题不会出现...
这周围有什么,或者我明显漏掉了什么?谢谢你
你可以试着这样做:
# setting multiindex
df = df.set_index(['field1','field2','field3'])
现在,当您像这样使用< code>df.at时:< code>df.at[('foo ',' bar ',' c')]['value1'],您将获得所需的结果:
field1 field2 field3
foo bar c 0.4
Name: value1, dtype: float64
根据我的尝试,您可能没有正确使用上的<code>查询数据帧。
问题内容: 我有一个索引元组数组,我想用它从多维numpy数组中选取值, 理解只有在已知的情况下才有效。 有什么提示吗? 问题答案: 您可以将的转置版本转换为元组,然后为矢量化解决方案建立索引-
问题内容: 我在MySQL数据库中有下表: SQL将如下所示: 如您所见,我同时创建了primaryId和和imgDate索引键。我的想法是,该WHERE子句使用primaryId,而ORDER子句使用来查询结果imgDate。 我的问题是,现在使用多索引会更好吗?还是我应该使用多列索引(目前我不太了解)? 这是我从EXPLAIN得到的: 注意:这不是使用多列索引,这是使用上表说明的结果。 问题答
我的集合中有两个数组(一个是嵌入式文档,另一个只是字符串的简单集合)。文档,例如: 由于一些查询将仅包含策略,而一些查询将包含标签和参与者数组,并且考虑到我无法创建具有两个数组的多键索引这一事实,我认为使用索引交叉点将是一个经典场景。 我正在执行一个查询,但我看不到交叉点。 以下是索引: 以下是查询: 这是解释的结果: 查询中的每个标记(tag1、tag-2和tag-3)都有10K个文档。每个策略
我有大量相同类型的实体,每个实体都有大量属性,并且我只有以下两种选择来存储它们: 将每个项存储在索引中并执行多索引搜索 将所有enties存储在单个索引中,并且只搜索1个索引。 一般而言,我想要一个时间复杂度之间的比较搜索“N”实体与“M”特征在上述每一种情况!
问题内容: 当我尝试仅获取像这样的数组的第一个元素时 我得到这个错误 我想找到一种在仍然使用切片的情况下执行此操作的方法,因为完整的代码会打开,并使用两列(从1到N之间不等)的所有列读取许多不同的文件。 问题答案: 您的数组只有 一个 维度:其形状为。然而,你的切片 指定选择 2米 的尺寸。这导致NumPy引发错误。 要从中获取第一个元素,只需编写即可(此处仅选择一个维度)。 看另一个问题,如果您
我有一个具有以下结构的表,它显示日历条目: 我想创建一个具有以下结构的新表,该表将显示第一行中给定日期的所有用户及其计划。: 我的问题是这样的: 如果Date1(或Date2…)在开始日期和结束日期之间,我想在第二个表中显示行的标题。所以我需要一个可以在所有单元格中编写的excel公式。 。 我可以写一个这样的SQL语句(我知道它的语法不正确,但我想展示我需要的内容): .............