【问题标题】:Pandas won´t create .csv filePandas 不会创建 .csv 文件
【发布时间】:2021-07-07 14:10:54
【问题描述】:

我最近开始涉足算法交易并构建一个用于加密交易的机器人。

为此,我使用 pandas 创建了一个回测器,以使用不同的参数运行不同的策略。我使用的数据集(csv 文件)相当大(每个大约 40mb)。

这些已处理,但只要我想将处理后的数据保存到 csv,什么都不会发生。没有任何输出,甚至没有错误消息。我尝试使用完整路径,尝试仅使用文件名保存它,我什至尝试将其保存为 .txt 文件。似乎没有任何效果。我还尝试了在 stackoverflow 上找到的解决方案。

我正在使用 Anaconda3,以防万一这可能是我的问题的根源。

在这里你可以找到我的代码部分,它试图将数据框保存到文件中。

results_df = pd.DataFrame(results) 
results_df.columns = ['strategy', 'number_of_trades', "capital"]    
print(results_df)
for i in range(2, len(results_df)):
    if results_df.capital.iloc[i] < results_df.capital.iloc[0]:
        results_df.drop([i],axis="index")
        #results to csv
        current_dir = os.getcwd()
        results_df.to_csv(os.getcwd()+'\\file.csv')
        print(results_df)

感谢您的帮助!

【问题讨论】:

  • 最好使用os.path.join(os.getcwd(),"file.csv")。否则,python在那个目录有写权限吗?
  • 您是否在循环内获得了 print 函数的输出?
  • 也许current_dir 不是您想的那样,打印出来并确定。我也强烈推荐使用pathlib
  • 我又检查了一遍。 os.getcwd() 以写入目录为目标。我使用打印功能再次检查。

标签: python pandas csv anaconda


【解决方案1】:

您可以大大简化您的代码并将其编写为(也应该运行得更快):

results_df = pd.DataFrame(results) 
results_df.columns = ['strategy', 'number_of_trades', "capital"]    
print(results_df)

first_row_capital= results_df.capital.iloc[0]
indexer_capital_smaller= results_df.capital < first_row_capital

values_to_delete= indexer_capital_smaller[indexer_capital_smaller].index
results_df.drop(index=values_to_delete, inplace=True)

#results to csv
current_dir = os.getcwd()
results_df.to_csv(os.getcwd()+'\\file.csv')
print(results_df)

我认为,您的代码中的主要问题可能是,每次您在数据框中找到满足条件的条目时都编写 csv,并且只有在找到这种情况时才编写它。

如果您只是删除 csv 输出,但不再需要内存中的数据帧,您可以让它变得更简单:

results_df = pd.DataFrame(results) 
results_df.columns = ['strategy', 'number_of_trades', "capital"]    
print(results_df)

first_row_capital= results_df.capital.iloc[0]
indexer_capital_smaller= results_df.capital < first_row_capital

#results to csv
current_dir = os.getcwd()
results_df[indexer_capital_smaller].to_csv(os.getcwd()+'\\file.csv')
print(results_df[indexer_capital_smaller])

第二个变体仅在写入过滤后的行和打印内容之前应用过滤器。

【讨论】:

  • 非常感谢!看来你是对的!我现在可以毫无问题地生成文件了!
猜你喜欢
  • 2012-08-28
  • 2019-03-24
  • 2018-05-03
  • 2017-10-04
  • 2017-08-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多