我想返回一个可迭代对象,该对象由pandas DataFrame的最后一行中的值组成。这似乎有用,虽然它有点冗长:
data.tail(1).itertuples(index=False).next()
# get the first item when iterating over the last 1 items as a tuple,
# excluding the index
有更简单的方法,还是我最好的方式?
编辑:两件重要的事情:
.iloc[n]
访问者导致类型强制创建一个Series对象,在我的情况下,数据类型是异构的(int16
,uint16
和uint32
的组合)和我需要保留的类型。答案 0 :(得分:3)
使用.values
属性访问基础数组,并将其解压缩到内置iter
函数中。
In [29]: df = pd.DataFrame([['a', 'b'], ['c', 'a']], columns=['A', 'B'])
In [30]: df
Out[30]:
A B
0 a b
1 c a
In [31]: gen = iter(*df.tail(1).values)
In [32]: next(gen)
Out[32]: 'c'
In [33]: next(gen)
Out[33]: 'a'
In [34]: next(gen)
---------------------------------------------------------------------------
StopIteration Traceback (most recent call last)
<ipython-input-34-8a6233884a6c> in <module>()
----> 1 next(gen)
StopIteration:
你应该仔细考虑为什么要这样做。矢量化操作几乎总是比迭代操作更好。