我想以顺序方式对数据框中的财务数据执行我自己的复杂操作。
例如,我正在使用从Yahoo Finance获取的以下 MSFT CSV 文件:
Date,Open,High,Low,Close,Volume,Adj Close 2011-10-19,27.37,27.47,27.01,27.13,42880000,27.13 2011-10-18,26.94,27.40,26.80,27.31,52487900,27.31 2011-10-17,27.11,27.42,26.85,26.98,39433400,26.98 2011-10-14,27.31,27.50,27.02,27.27,50947700,27.27 ....
然后我执行以下操作:
#!/usr/bin/env python from pandas import * df = read_csv('table.csv') for i, row in enumerate(df.values): date = df.index[i] open, high, low, close, adjclose = row #now perform analysis on open/close based on date, etc..
这是最有效的方法吗?鉴于 pandas 对速度的关注,我认为必须有一些特殊的函数来迭代值,以一种也检索索引的方式(可能通过生成器来提高内存效率)?df.iteritems不幸的是,只能逐列迭代。
df.iteritems
最新版本的 pandas 现在包括一个用于迭代行的内置函数。
for index, row in df.iterrows(): # do some logic here
或者,如果您想要更快地使用它itertuples()
itertuples()
但是,unutbu 建议使用 numpy 函数来避免迭代行将产生最快的代码。