質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

89.63%

python pandas max関数を日付と共に表示させたいです。

解決済

回答 2

投稿

  • 評価
  • クリップ 0
  • VIEW 84

Mario_11

score 58

pandasのMAX関数を日付と共に表示させたいのですが、調べてもやり方がわからず質問させていただきました。

import pandas_datareader.data as web #データのダウンロードライブラリ

number = 7676
df = web.DataReader(str(number)+".T","yahoo","1980/1/1").dropna()#jpy
df = df.dropna(how='any')

print(df.tail())
print(df["Volume"][-100:].max())


出力結果

              High     Low    Open   Close   Volume  Adj Close
Date                                                          
2020-02-07  1195.0  1166.0  1195.0  1176.0   8500.0     1176.0
2020-02-10  1186.0  1141.0  1161.0  1177.0   5000.0     1177.0
2020-02-12  1196.0  1160.0  1196.0  1184.0   6300.0     1184.0
2020-02-13  1196.0  1104.0  1185.0  1137.0  32900.0     1137.0
2020-02-14  1000.0   936.0   972.0   974.0  47300.0      974.0

160800.0


どうすればmax関数と一緒に日付を表示させることができますか?
わかる方いれば教えてください、よろしくお願い致します。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

checkベストアンサー

+2

Series.idxmax() にて最大値を取る行のIndex値(日時)を得ることができますので、これを使用すると良いかと思います。

https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.idxmax.html

# Volume列が最大のIndex値(日時)を取得
idx = df.iloc[-10:, df.columns.get_loc("Volume")].idxmax()
print(idx)
# 2020-02-19 00:00:00

# Volume列が最大値を取得
max_value = df.iloc[-10:, df.columns.get_loc("Volume")].max()
print(max_value)
# 9964

# Volume列が最大の行を表示
print(df.loc[idx])
#High         1002.0
#Low          1041.0
#Open         1072.0
#Close        1170.0
#Volume       9964.0
#Adj Close    1105.0
#Name: 2020-02-19 00:00:00, dtype: float64

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2020/02/14 12:35

    idxmaxが使えるのは、「Volume列が最大の行」が複数ある時それらから代表の1個だけ分かればいい、という条件の時ですね。

    キャンセル

  • 2020/02/14 12:58

    はい。そのとおりidxmaxの場合はそうなりますね。

    キャンセル

  • 2020/02/15 13:05

    ありがとうございます!

    キャンセル

+2

単純に以下のように最大値と一致する行を抽出すればよいのではないでしょうか。

import pandas as pd

# テストデータ
df = pd.DataFrame({'Date':['2020-02-01', '2020-02-02', '2020-02-03', '2020-02-04'], 'Volume':[100, 300, 200, 300]})
df['Date'] = pd.to_datetime(df['Date'])
df = df.set_index('Date')
print(df)
#            Volume
#Date
#2020-02-01     100
#2020-02-02     300
#2020-02-03     200
#2020-02-04     300

ret = df.loc[df['Volume'] == df['Volume'].max()]
print(ret)
#            Volume
#Date
#2020-02-02     300
#2020-02-04     300

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2020/02/15 13:05

    ありがとうございます!

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 89.63%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる