2017-08-31 25 views
1

特定の行番号から始まる行を繰り返して、パンダのデータフレームからデータを読み込みます。私はdf.iterrows()があることを知っていますが、どこから繰り返し始めたいか指定することはできません。私の特定の場合にはパンダ指定された行番号から行を繰り返します。

、私はこのようになりますcsvファイルがあります。

Date, Temperature 
21/08/2017 17:00:00,5.53 
21/08/2017 18:00:00,5.58 
21/08/2017 19:00:00,4.80 
21/08/2017 20:00:00,4.59 
21/08/2017 21:00:00,3.72 
21/08/2017 22:00:00,3.95 
21/08/2017 23:00:00,3.11 
22/08/2017 00:00:00,3.07 
22/08/2017 01:00:00,2.80 
22/08/2017 02:00:00,2.75 
22/08/2017 03:00:00,2.79 
22/08/2017 04:00:00,2.76 
22/08/2017 05:00:00,2.76 
22/08/2017 06:00:00,3.06 
22/08/2017 07:00:00,3.88 

を私は(の8月22日の真夜中を言わせて)上の特定の時点からすべての行をループしたいですこのように実装しようとしました。

result[0]実際に私に正しい番号が与えられます。

私は何をすることができるかは、その数を増やしてdf.iloc[[x]]を通して行にアクセスすることだと思います。

for x in range(result[0], len(df)): 
    row = df.loc[[x]] 

これまでに見つかったすべての回答は、テーブル全体を反復する方法のみを示しています。

答えて

0

だけiterrows()を呼び出す前に、あなたのデータフレームをフィルタリング:

df['Date'] = pandas.to_datetime(df['Date']) 
for idx, row in df[df['Date'] >= '2017-08-22'].iterrows(): 
    # 
    # Whatever you want to do in the loop goes here 
    # 

注フィルタリング引数を変換する必要がないこと'2017-08-22'パンダはpartial string indexingを処理できるため、datetimeオブジェクトに変換します。

+0

+1私が探している正確なdatetimeがテーブルにない場合でも動作するので+1。文字列をアルファベット順に比較するように頭を上げてください。日時に変換されるとうまくいきます。 –

+0

'Date'列が文字列ではなくdatetimeオブジェクトであるかどうかについては、あなたが話していると思います。あなたは正しい、私はそれを仮定していた。投稿を更新します。 – kev8484

+0

それについてもっと具体的にしておかなければならない。ご協力いただきありがとうございます –

4

Datedatetimeにする。 indexとしてDateを設定します。

df.Date = pd.to_datetime(df.Date) 

df = df.set_index('Date') 

その後:

for date, row in df['22/08/2017 00:00:00':].iterrows(): 
    print(date.strftime('%c'), row.squeeze()) 

Tue Aug 22 00:00:00 2017 3.07 
Tue Aug 22 01:00:00 2017 2.8 
Tue Aug 22 02:00:00 2017 2.75 
Tue Aug 22 03:00:00 2017 2.79 
Tue Aug 22 04:00:00 2017 2.76 
Tue Aug 22 05:00:00 2017 2.76 
Tue Aug 22 06:00:00 2017 3.06 
Tue Aug 22 07:00:00 2017 3.88 
+0

まあまあです。テーブルをスライスするだけのことは考えていませんでした。 –

関連する問題