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

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

新規登録して質問してみよう
ただいま回答率
85.46%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

1回答

7150閲覧

python for分でiterrows使うとエラー出る

yuudai

総合スコア65

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2020/02/20 13:21

前提・実現したいこと

for文に対して一行ずつ処理したいのですがTypeError: tuple indices must be integers or slices, not strというエラーが出てしまいます。原因はデータがtupleだかららしいですが単純にリストにしてもうまくいかなかった(あまり調べてないけど)今の自分に当てはまる解決方法が見つからなかったので質問しました。要はデータフレームをfor文で一行ずつ処理したいということです。

該当のデータ
イメージ説明

■■な機能を実装中に以下のエラーメッセージが発生しました。

発生している問題・エラーメッセージ

3 for i in rate_reset_index.iterrows(): ----> 4 if i['hour'] == 0: 5 nangatu = i['month'] #日付を取得 6 nanniti = i['day'] TypeError: tuple indices must be integers or slices, not str

該当のソースコード

python

1for i in rate_reset_index.iterrows(): 2 if i['hour'] == 0: 3 nangatu = i['month'] #日付を取得 4 nanniti = i['day'] 5 day = str(nangatu) + '/' + str(nanniti) #hizuke = str(mm) + '/' + str(dd) 6 hajimene = i['o'] #openを取得 7 if i['hour'] == 6: 8 owarine = i['c'] #closeを取得 9 tokyo = owarine - hajimene 10 if tokyo >= 1: 11 t_bar = 'white candlestick' 12 else: 13 t_bar = 'black candlestick' 14 if i['hour'] == 7: 15 hajimene = i['o'] 16 if i['hour'] == 12: 17 owarine = i['c'] 18 london = owarine - hajimene 19 if london >= 1: 20 l_bar = 'white candlestick' 21 else: 22 l_bar = 'black candlestick' 23 if i['hour'] == 13: 24 hajimene = i['o'] 25 if i['hour'] == 17: 26 owarine = i['c'] 27 ny = owarine - hajimene 28 if ny >= 1: 29 n_bar = 'white candlestick' 30 else: 31 n_bar = 'black candlestick' 32 if i['hour'] == 18: 33 hajimene = i['o'] 34 if i['hour'] == 23: 35 owarine = i['c'] 36 midnight = owarine - hajimene 37 if midnight >= 1: 38 m_bar = 'white candlestick' 39 series = pd.Series([day, t_bar, l_bar, n_bar, m_bar], index=each_market.columns) 40 each_market = each_market.append(series, ignore_index = True) 41 else: 42 m_bar = 'black candlestick' 43 series = pd.Series([day, t_bar, l_bar, n_bar, m_bar], index=each_market.columns) 44 each_market = each_market.append(series, ignore_index = True)

試したこと

ここに問題に対して試したことを記載してください。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

pandas.DataFrame.iterrows

Iterate over DataFrame rows as (index, Series) pairs.

なので以下のような感じで使えます。

Python

1import pandas as pd 2 3df = pd.DataFrame({'c':[1,2,3]}) 4for r in df.iterrows(): 5 print( r[1]['c']) 6 7for i,r in df.iterrows(): 8 print( r['c'])

投稿2020/02/20 13:36

can110

総合スコア38278

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問