pandas to_csv创建空的、未指定的文件[英] pandas to_csv creates empty, unspecified file

本文是小编为大家收集整理的关于pandas to_csv创建空的、未指定的文件的处理方法,想解了pandas to_csv创建空的、未指定的文件的问题怎么解决?pandas to_csv创建空的、未指定的文件问题的解决办法?那么可以参考本文帮助大家快速定位并解决问题。

问题描述

我是Python和编程的新手,因此这可能是一个愚蠢的问题.

我目前正在使用Psychopy v1.90.2独立的编码器版本(Python 2.7)的心理学实验,该实验基于现有脚本和同事的教程.它在我的计算机(MAC)和Windows 10计算机上完美工作,但是在使用Windows7的计算机上,它不能将输出(即参与者的响应)保存到CSV文件中.创建一个空文件,没有任何文件规范,但是正确的文件名和正确的位置.

  • 我可以正确导入基础CSV文件以创建刺激
  • 如果我包括打印DF,我可以在控制台中看到数据框,因此数据存在于某个地方,至少暂时
  • 我的系统(Mac)是德语,但是Windows 10和7计算机设置为法式
  • 根本没有错误消息.
  • 我以前已经在(比利时)法国Mac上成功完成了该实验.

from psychopy import visual, core, event, gui, info, data import pandas as pd import numpy as np import os import random import sys import time GUI = gui.Dlg(title = "example") GUI.addField('participant:') GUI.show() if GUI.OK: metadata = GUI.data else: sys.exit('participant cancelled') w = visual.Window([1000, 600], color='black', units='pix') df = pd.DataFrame([[1, 2], [5, 3], [4, 6]], columns=['stim_a', 'stim_b']) df['participant'] = int(metadata[0]) df['ans'] = '' df = df.iloc[random.sample(df.index, len(df))] df.index = range(len(df)) output_df = "S_" + str(df.participant) + "_df" + "_" + time.strftime("%Y-%m:%d_%Hh%M") + ".csv" for j in range(df.shape[0]): event.clearEvents() stim_a = visual.TextStim(w, df.stim_a[j]) stim_a.draw() w.flip() resp = event.waitKeys() df.ans[j] = resp print df df.to_csv(output_df, index = False, header = True, sep = ',', encoding = 'utf-8')

最终应该存在的内容:最初包含DF中包含的所有信息的CSV文件,以及包含参与者号码的"参与者"列和包含参与者执行的密钥按钮的" ANS"列.

我尝试的是:

  • 不同版本的精神拷贝,除了使用Python 3
  • 我怀疑不同键盘布局的编码问题b/c,所以我对此进行了更改,但没有更改(在比利时法国计算机上不是问题)
  • 这里提出的解决方案:更改python的违约编码吗? ?
  • 文件名称中没有特殊字符,也没有在所有CSV文件中都读入,但并未保存它们.
  • 计算机上使用的管理特权

我知道,通过使用实验室手机可以保存数据比"纯"大熊猫更好,但是正如之前的工作一样,到目前为止,我的知识仅限于我的同事使用Psychopy的方式,我保留了这种方法.我还有其他我设法解决的兼容性问题,恐怕鉴于我目前遇到的时间压力,这是一种沉没的情况...

编辑:现在应该有效的示例,对不起!

推荐答案

当脚本终止时,CSV数据编写("冲洗").问题可能是由于Windows 7中的OS特定原因而悬挂它.我以前已经看过它,并以两种不同的方式解决了它:

脚本终止之前的亲密心理拷贝

将其添加到脚本的末尾:

w.close()
core.quit()

在脚本终止之前关闭CSV文件对象

从答案复制在这里::替换df.to_csv行,用以下文件对文件对象明确关闭以前关闭脚本终止.

outfile = open(output_df, 'wb')
df.to_csv(outfile, index = False, header = True, sep = ',', encoding = 'utf-8')
outfile.close()

本文地址:https://www.itbaoku.cn/post/1728102.html