2017-06-20 15 views
1

"インデックス"には8000を超えるアイテムがありますが、forループは最初のアイテムのジョブを実行します。パンダを反復するシリーズは一度だけ実行する

from datetime import datetime 
from pandas import Series 
from pandas import DataFrame 

series = Series.from_csv('something.csv', header=1) 
index = DataFrame(series.index) 

for item in index: 
    dt = datetime.strptime(item, "%Y-%m-%d %H:%M:%S.%f") 
    dt = dt.time().isoformat() 
    print(dt) 

だから、インデックス列の項目は次のようになります。forループ1998-02-14 19:30:54.052000

そしてこの19:30:54.052000が、最初の行だけのために行います。どんな考え?

+0

この動作を再現する 'index'のサンプルを含めれば有益でしょう。 –

答えて

3

これは、シリーズのアイテムをループする方法ではありません。あなたが行ったことは、を繰り返し、シリーズには1つしかありません。そのため、1回だけ実行されます。ベクトル化された操作で目標を達成する方法がない場合は、Series.iteritemsを使用してください。

for idx, item in index.iteritems(): 
    dt = ... 

ただし、この場合、for-loopの代わりにSeries.applyを使用できます。

index.apply(lambda x: datetime.strptime(x, "%Y-%m-%d %H:%M:%S.%f").time().isoformat()) 
+0

ありがとう!できます。 「%Y-%m-%d%H:%M:%S.%f」という別のエラーが表示されます。私は小数点以下の桁数と何もない桁数を持つデータを持っています(たとえば、19:30:54.052000と単純に19:30:55)。どのようにして両方のタイプで動作させることができますか?ありがとうございました! – CrisH

+0

これは別の質問です。そのように投稿する必要があります。必要な場合は、この質問にリンクを含めることで参照できます。 –

+0

ありがとう、私はそれを固定しました。 – CrisH

関連する問題