Jus*_*tin 3 python tuples numpy pandas
我正在尝试将pandas数据帧转换为元组列表.但是我在获取元组中的值的索引(即日期)时遇到了困难.我的第一步是去这里,但他们没有为元组添加任何索引.
我唯一的问题是访问numpy数组中每一行的索引.我有一个如下所示的解决方案,但它使用了一个额外的计数器indexCounter,它看起来很草率.我觉得应该有一个更优雅的解决方案来从特定的numpy数组中检索索引.
def get_Quandl_daily_data(ticker, start, end):
prices = []
symbol = format_ticker(ticker)
try:
data = quandl.get("WIKI/" + symbol, start_date=start, end_date=end)
except Exception, e:
print "Could not download QUANDL data: %s" % e
subset = data[['Open','High','Low','Close','Adj. Close','Volume']]
indexCounter = 0
for row in subset.values:
dateIndex = subset.index.values[indexCounter]
tup = (dateIndex, "%.4f" % row[0], "%.4f" % row[1], "%.4f" % row[2], "%.4f" % row[3], "%.4f" % row[4],row[5])
prices.append(tup)
indexCounter += 1
Run Code Online (Sandbox Code Playgroud)
在此先感谢您的帮助!
你可以迭代结果to_records(index=True).
假设你从这开始:
In [6]: df = pd.DataFrame({'a': range(3, 7), 'b': range(1, 5), 'c': range(2, 6)}).set_index('a')
In [7]: df
Out[7]:
b c
a
3 1 2
4 2 3
5 3 4
6 4 5
Run Code Online (Sandbox Code Playgroud)
然后这可以工作,除了它不包括index(a):
In [8]: [tuple(x) for x in df.to_records(index=False)]
Out[8]: [(1, 2), (2, 3), (3, 4), (4, 5)]
Run Code Online (Sandbox Code Playgroud)
但是,如果你通过index=True,那么它会做你想要的:
In [9]: [tuple(x) for x in df.to_records(index=True)]
Out[9]: [(3, 1, 2), (4, 2, 3), (5, 3, 4), (6, 4, 5)]
Run Code Online (Sandbox Code Playgroud)