1. ホーム
  2. python

[解決済み] データフレーム内の最後の要素のアクセスインデックス

2023-01-07 08:13:27

質問

この方法を探しているのですが、なかなか見つかりません(極めて些細なことなのでしょうが)。

私が抱えている問題は、データフレームの最初と最後のエントリの列の値を取得したいことです。しかし、もし私がそうするなら

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']が単純な整数を出力しないため)。

何かアイデアはありますか?

どのように解決するのですか?

以前の回答は、現在、以下のものに取って代わられています。 .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_valid_index().last_valid_index() を除外するかどうかによりますが、? NaN を排除したいかどうかによって、それらはあなたが望むものではない可能性があります。

次のことを忘れないでください。 df.ix[0] では1番ではなく、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