3

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

もっと簡単な方法はありますか、それとも私が持っているものが最善ですか?


編集:2つの重要なこと:

  • 高いパフォーマンスを達成しようとしているわけではありません (これは大きなテーブルの 1 行にすぎません)
  • .iloc[n]アクセサーは、型の強制によって Series オブジェクトを作成します。私の場合、データ型は異種 ( と の組み合わせ)int16uint16ありuint32、型を保持する必要があります。
4

1 に答える 1

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: 

なぜこれをやりたいのかをよく考える必要があります。ベクトル化された操作は、ほとんどの場合、反復操作よりも優れています。

于 2013-10-18T13:24:20.007 に答える