我有一個csv文件,日期,時間,價格,mag,信號。 62035行;每天有42次與文件中的每個唯一日期相關聯。列表理解循環
對於每個日期,當信號列中出現'S'時,在'S'出現時附加相應的價格。以下是嘗試。
from pandas import *
from numpy import *
from io import *
from os import *
from sys import *
DF1 = read_csv('___.csv')
idf=DF1.set_index(['date','time','price'],inplace=True)
sStore=[]
for i in idf.index[i][0]:
sStore.append([idf.index[j][2] for j in idf[j][1] if idf['signal']=='S'])
sStore.head()
Traceback (most recent call last)
<ipython-input-7-8769220929e4> in <module>()
1 sStore=[]
2
----> 3 for time in idf.index[i][0]:
4
5 sStore.append([idf.index[j][2] for j in idf[j][1] if idf['signal']=='S'])
NameError: name 'i' is not defined
我不明白爲什麼我的索引不在這裏不允許的。謝謝。
我也認爲這是奇怪的是:
idf.index.levels [0]將顯示日期「不解析」,因爲它是在該文件中,但出故障了。儘管parse_date = True作爲set_index中的參數。
我提起這事,因爲我想邊的刷卡問題是這樣的:基於以下DSM的評論
for i in idf.index.levels[0]:
sStore.append([idf.index[j][2] for j in idf.index.levels[1] if idf['signal']=='S'])
sStore.head()
我的編輯2012年12月30日:
我想用我的想法得到P,如下面我評論的。其中,如果S = B,對於任何給定的日期,我們利用收盤時間差,1620
v=[df["signal"]=="S"]
t=[df["time"]=="1620"]
u=[df["signal"]!="S"]
df["price"][[v and (u and t)]]
也就是說,「給我的價格在1620(即使它不給!」賣信號「,S),以便我可以用」額外的B「來區分 - 對於B> S的特殊情況,這忽略了對稱關係(其中S> B),但現在我想理解這個邏輯問題。
在回溯,這個表達式給出:
ValueError: boolean index array should have 1 dimension
注意,以便調用DF [「時間」] 我做ñ ot set_index here。嘗試聯合運算符|得出:
TypeError: unsupported operand type(s) for |: 'list' and 'list'
在最大院士的做法,
@Max研究員
點是在一天結束的時候,收出位置尋找;所以我們需要在最後收集所有那些已經累積的B,S的「卸貨」價格;但並沒有互相排斥。 如果我說:
filterFunc1 = lambda row: row["signal"] == "S" and ([row["signal"] != "S"][row["price"]=="1620"])
filterFunc2 =lambda row: ([row["price"]=="1620"][row["signal"] != "S"])
filterFunc=filterFunc1 and filterFunc2
filteredData = itertools.ifilter(filterFunc, reader)
在回溯:
IndexError: list index out of range
變量'i'在您的迭代過程中創建('for i'),但您正在使用'我'確定迭代對象('idf.index [i] [0]')。由於'idf.index [i] [0]'部分將首先被評估,並且由於此時沒有'i'的值,所以將會拋出錯誤。 – RocketDonkey
@phihag如果我想「做算法」限制在那些日子的42次,所有的日子裏。我該如何解決這個問題?你看到上面列表理解的其他問題嗎?謝謝。 –
不相關,但你真的**不想做所有'''' - 進口。 ''從numpy導入*'將用'numpy'替代內建'any',它不處理genexps,所以'any((對於我在範圍(3)中爲False)} == True'; 'from os import *'將用'os.open'替換'open',所以大部分'open'調用都會返回'TypeError:需要一個整數';等等。 – DSM