2015-07-10 32 views
0

我有這個功能,在計算我需要的東西時工作正常,但問題是,當我嘗試將它保存到csv時,它刪除了我以前計算的所有df ...幫助請python func刪除以前的熊貓數據框

dc = {'A':df['RSI']} 
df = pd.DataFrame(dc) 

print df 

def func(row): 
    if (row[['A']] > 70).all(): 
     return -1 
    elif (row[['A']] < 30).all(): 
     return 1 
    else: 
     return 0 


df['D'] = df.apply(func, axis = 1) 
+0

你如何保存到CVS?可能你通過了'w'(寫作妻子)而不是'a'(追加到文件)的論點。 –

回答

0

看起來你正在尋找append大多數編程語言「寫」,也截斷寫任何東西之前,文件長度爲零。

+0

是的,但df.append不允許我將函數作爲參數傳遞。糾正我在這裏,如果我錯了我不確定 – markan3

0

如果您使用pandas.DataFrame.to_csv(your_arguments)來編寫文件,那麼默認模式參數是'w',它將用新數據覆蓋文件。請嘗試改爲使用pandas.DataFrame.to_csv(your_arguments, mode='a')

使用簡單的Python是一樣的:

with open(filename, 'w') as f: 

將覆蓋該文件

with open(filename, 'a') as f: 

將新行追加到現有的文件。

0

更新:我已經成功地解決了使用數組像這樣的問題:

field = [] 
field = pd.DataFrame(dc) 
field = field.apply(func, axis = 1) 
df['solution'] = pd.DataFrame(field)