当前位置: 首页 > 知识库问答 >
问题:

数据帧中最后一个元素的访问索引

韩宜春
2023-03-14

我到处寻找这个,但我似乎找不到它(尽管它一定非常琐碎)。

我的问题是,我想检索数据帧的第一个和最后一个条目的列的值。但是如果我这样做了:

df.ix[0]['date']

我得到:

datetime.datetime(2011, 1, 10, 16, 0)

但是如果我这样做了:

df[-1:]['date']

我得到:

myIndex
13         2011-12-20 16:00:00
Name: mydate

用不同的格式。理想情况下,我希望能够访问数据帧的最后一个索引的值,但我找不到如何访问。

我甚至尝试创建一个包含索引值的列(IndexCopy),然后尝试:

df.ix[df.tail(1)['IndexCopy']]['mydate']

但这也会产生一种不同的格式(因为df.tail(1)['IndexCopy']不输出简单的整数)。

有什么想法吗?

共有3个答案

弘康安
2023-03-14
df.tail(1).index 

似乎是最可读的

邓翼
2023-03-14

结合@comte的答案和dmdip的答案在获取一行熊猫数据帧的索引作为整数

df.tail(1).index.item()

为您提供索引的值。

请注意,索引并不总是定义良好,无论它们是多索引还是单索引。使用索引修改数据帧可能会导致意外行为。我们将有一个多索引案例的例子,但请注意,在单索引案例中也是如此。

说我们有

df = pd.DataFrame({'x':[1,1,3,3], 'y':[3,3,5,5]}, index=[11,11,12,12]).stack()

11  x    1
    y    3
    x    1
    y    3
12  x    3
    y    5              # the index is (12, 'y')
    x    3
    y    5              # the index is also (12, 'y')

df.tail(1).index.item() # gives (12, 'y')

试图访问最后一个元素与索引df[12,"y"]产生

(12, y)    5
(12, y)    5
dtype: int64

如果试图基于索引(12,y)修改数据帧,则将修改两行而不是一行。因此,尽管我们已经学会了访问最后一行索引的值,但如果您想基于其索引更改最后一行的值,这可能不是一个好主意,因为可能有许多行共享同一索引。不过,在本例中,您应该使用df.iloc[-1]访问最后一行。

参考

https://pandas.pydata.org/pandas-docs/stable/generated/pandas.Index.item.html

胡云瀚
2023-03-14

以前的答案现在被. iloc所取代:

>>> df = pd.DataFrame({"date": range(10, 64, 8)})
>>> df.index += 17
>>> df
    date
17    10
18    18
19    26
20    34
21    42
22    50
23    58
>>> df["date"].iloc[0]
10
>>> df["date"].iloc[-1]
58

我能想到的最短路径是使用.iget()

>>> df = pd.DataFrame({"date": range(10, 64, 8)})
>>> df.index += 17
>>> df
    date
17    10
18    18
19    26
20    34
21    42
22    50
23    58
>>> df['date'].iget(0)
10
>>> df['date'].iget(-1)
58

或者:

>>> df['date'][df.index[0]]
10
>>> df['date'][df.index[-1]]
58

还有.first\u valid\u index().last\u valid\u index(),但这取决于您是否要排除NaNs,它们可能不是您想要的。

请记住,df.ix[0]不会给出第一个,而是由0索引的。例如,在上述情况下,df.ix[0]将产生

>>> df.ix[0]
Traceback (most recent call last):
  File "<ipython-input-489-494245247e87>", line 1, in <module>
    df.ix[0]
[...]
KeyError: 0
 类似资料:
  • 本文向大家介绍php访问数组最后一个元素的函数end()用法,包括了php访问数组最后一个元素的函数end()用法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了php访问数组最后一个元素的函数end()用法。分享给大家供大家参考。具体分析如下: end()函数在PHP中用于检索数组中的最后一个元素。end()函数需要一个数组作为其唯一参数,并返回给定数组最后一个元素的元素值。 上面的代码

  • 本文向大家介绍JavaScript数组中的第一个元素和最后一个元素?,包括了JavaScript数组中的第一个元素和最后一个元素?的使用技巧和注意事项,需要的朋友参考一下 数组是一组元素。每个元素都有其自己的 索引值。我们可以使用这些索引访问任何元素。但是,对于最后一个元素,直到知道数组中存在的元素数量,我们才知道索引。在这种情况下,我们必须使用逻辑。让我们简要地讨论这些细节。 访问第一个元素 因

  • 我想使用RestAssured来测试一个返回JSON对象列表的endpoint。如何使用RestAssured JsonPath验证列表中最后一个对象的内容? 示例返回值: 我尝试使用负索引:< code>body("[-1])。foo ",equal to(" brazz "),但这并不奏效,因为放心认为< code>"[-1]。foo"为空列表。 如何使用JsonPath语法访问列表的最后一个

  • 我正在改装一些现有代码以使用Spark。我有多个包含不同数据集的数据帧。在转换主数据帧(或主数据集)时,我需要使用来自其他数据帧的数据来完成转换。我还有一种情况(至少在当前结构中),我需要在另一个数据帧的转换函数中创建新的数据帧。 我试图确定以下内容: 我可以在另一个数据帧的转换函数中访问数据帧吗 关于如何处理这种情况的指针将非常有帮助。

  • 问题内容: 从像这样的PySpark SQL数据框 如何获得最后一行。(就像df.limit(1)一样,我可以将数据帧的第一行放入新的数据帧中)。 以及如何按索引访问数据框行。12或200。 我可以在熊猫里做 我只是很好奇如何以这种方式或其他方式访问pyspark数据框。 谢谢 问题答案: 如何获得最后一行。 假设所有列都可修改的漫长而丑陋的方式: 如果不是所有列都可以订购,则可以尝试: 注意。/

  • 尝试以这种方式访问pandas数据帧中的单个元素时出错test_df[“LABEL”][0]。以下是关于如何加载数据的代码片段: 以下是我得到的错误: 文件“code.py”,第80行,在getitem result=self.index.get_value(self,key)文件“/usr/local/lib/python2.7/dist-packages/pandas/core/series.