我有不同列中的数据,但我不知道如何提取它以将其保存在另一个变量中.
index a b c
1 2 3 4
2 3 4 5
Run Code Online (Sandbox Code Playgroud)
我该如何选择'a','b'并保存到DF1?
我试过了
df1 = df['a':'b']
df1 = df.ix[:, 'a':'b']
Run Code Online (Sandbox Code Playgroud)
似乎没有工作.
我希望以顺序方式对数据框中的财务数据执行我自己的复杂操作.
例如,我使用从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
....
Run Code Online (Sandbox Code Playgroud)
然后我做以下事情:
#!/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..
Run Code Online (Sandbox Code Playgroud)
这是最有效的方式吗?鉴于对熊猫速度的关注,我认为必须有一些特殊的函数来迭代遍历值,同时也检索索引(可能通过生成器来节省内存)?df.iteritems遗憾的是,只能逐列迭代.
假设我们有一个包含A,B和C列的数据框:
df = pd.DataFrame(columns =('A','B','C'), index=range(1))
Run Code Online (Sandbox Code Playgroud)
列包含三行数值:
0 A B C
1 2.1 1.8 1.6
2 2.01 1.81 1.58
3 1.9 1.84 1.52
Run Code Online (Sandbox Code Playgroud)
如何循环遍历从1到3的每一行,然后执行if语句,包括添加一些变量:
if B1 > 1.5
calc_temp = A1*10
calc_temp01 = C1*-10
if B2 > 1.5
calc_temp = A2*10
calc_temp01 = C2*-10
if B3 >1.5
calc_temp = A3*10
calc_temp01 = C3*-10
Run Code Online (Sandbox Code Playgroud)
甚至可能吗?它必须知道一系列的种类,即带有某种计数器的全范围数据集号,是吗?if语句应该引用该特定行.