迭代pandas系列只执行一次

时间:2017-06-20 17:04:47

标签: python pandas datetime for-loop

我在“索引”中有超过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)

因此索引列中的项目如下所示:1998-02-14 19:30:54.052000

for循环执行此19:30:54.052000,但仅适用于第一行。知道为什么吗?

1 个答案:

答案 0 :(得分:3)

这不是你如何循环系列的项目。你做了什么迭代,而在一系列中,只有一个。这就是为什么它只执行一次。如果无法通过矢量化操作实现目标,请使用Series.iteritems

v1 = np.array([1,4,2,np.nan,3])
v2 = np.array([np.nan,np.nan,2,4,1])
np.where(np.isnan(v1),0,v1).dot(np.where(np.isnan(v2),0,v2))

但在这种情况下,您可以使用Series.apply代替for-loop。

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