簡體   English   中英

保存 pandas 數據幀列表以在另一個文件中使用

[英]Saving list of pandas dataframes for use in another file

我編寫了一個優化算法,用於測試歷史股票數據的某些函數,然后返回每次運行生成的 pandas 數據幀的二維列表和使用的 function 參數。 此列表采用[[df,params],[df,params], ... [df,params],[df,params]]的形式。 生成后,我想保存此數據以在另一個腳本中處理,但我遇到了麻煩。 目前我正在將此列表轉換為 dataframe 並使用 pandas 中的to_csv()方法,但是當我在另一個文件中打開它時,這會破壞我的數據 - 我希望數據類型為[[dataframe,list][dataframe,list]...[dataframe,list][dataframe,list]] ,但它們變成了[[str,str],[str,str]...,[str,str],[str,str]] 我使用 pandas 中的 read_csv() 方法打開文件,然后使用df.values.to_list() read_csv()方法將生成的 dataframe 轉換回列表。

為了澄清,我像這樣將列表保存到out ,列表在哪里:

out = pd.DataFrame(out)
out.to_csv('optimized_ticker.csv')

我打開 .csv 並將其從 dataframe 轉換回如下列表:

df = pd.read_csv('optimized_ticker.csv')
list = df.values.tolist()

我認為問題是我的數據幀在某處有逗號,所以我嘗試將 .csv 上的分隔符更改為一些不同的東西,但問題仍然存在。 我該如何解決這個問題,以便我的數據類型不是? 我不一定非要使用 .csv 格式,所以如果有更適合該工作的文件類型,我可以改用它。 保存數據的唯一目的是讓我可以使用任意數量的其他腳本來處理它,而不必每次都重新運行模擬。

保存 pandas dataframe 的最佳方法不是通過 CSV 如果它的唯一目的是被另一個 pandas 腳本讀取。 Parquet 提供了一個更強大的選項,它保存了每一列的數據類型,可以被壓縮,你不必擔心值中的逗號之類的事情。 只需使用以下內容:

out.to_parquet('optimized_ticker.parquet')
df = pd.read_parquet('optimized_ticker.parquet')

編輯:正如評論中提到的泡菜也是一種可能性,所以解決方案取決於你的情況。 在確定是使用pickle還是parquetfeather時,Google 將是您最好的朋友。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM