2016-07-07 231 views
0

请容易,我是学生!将Python结果导出为CSV

我无法将以下代码的结果导出到CSV中。对于每一个循环(硬币翻转),我需要将结果导出为名为RESULTS.CSV的CSV作为新的ROW。

我尝试了四种不同的方法发布在StackOverflow上,但迄今为止还没有成功。我很难理解语法/逻辑。我讨厌这个问题,总是试图避免它,但是有谁会介意给我一个简单的解决方案,以便我可以剖析逻辑? (而不是引用到文章中,我已经尝试去理解他们,但我有麻烦)

版本:Python的3.5

import random 

flipcount=int(input("How many times should I flip a coin?\n###:")) 

samples = [ random.randint(1, 2) for i in range(flipcount) ] 
heads = samples.count(1) 
tails = samples.count(2) 

for s in samples: 
    msg = 'Heads' if s==1 else 'Tails' 
    print(msg) 

print ("Heads count=%d, Tails count=%d" % (heads, tails)) 

这是一次失败的尝试。我相信我已经饱和我对这个话题的研究并且让我很困惑......

import random 
import csv 

flipcount=int(input("How many times should I flip a coin?\n###:")) 


samples = [ random.randint(1, 2) for i in range(flipcount) ] 
heads = samples.count(1) 
tails = samples.count(2) 
writer = csv.writer(w) 

for s in samples: 
    msg = 'Heads' if s==1 else 'Tails' 
    print(msg) 
    with open('some.csv', 'w', newline='') as f: 
     writer.writerows(msg) 

print ("Heads count=%d, Tails count=%d" % (heads, tails)) 
+0

我认为这将是有益的张贴失败的尝试。另外,看看旧的stackoverflow问题,因为这个问题并不新鲜。 – ishaan

+0

你应该发布预期的输出...我们不知道你想写所有的尝试和/或只是最后的消息... –

回答

0
import pandas as pd 
import numpy as np 
#get the flipcount 
flipcount=int(input("How many times should I flip a coin?\n###:")) 
samples = np.random.randint(0, 2, size = flipcount) 
#create a pandas dataframe 
data = pd.DataFrame(["heads" if i == 1 else "Tails" for i in samples]) 
#create a csv file 
data.to_csv("data.csv", index=False, header=False) 
+0

Whaaa!.. 。 很简单。我没有在我正在阅读的文章中看到to_csv。非常感谢你。这极大地简化了我的代码并教会了我几件事。 干杯 – Tucker

+0

也想提一下,你的版本似乎在实际的硬币翻转速度更快。我可以很快完成1,000,000次翻转。再次感谢我的洞察力和新工具,让我学习。 – Tucker

+0

非常欢迎:)。 Numpy真的是一个事实上的快速野兽。 – hashcode55

0

这会奏效。现在,不是仅仅打印结果,而是将它们追加到列表'数据'中。 “数据”的每一行都会包含您的结果。然后,将列表'数据'写入一个csv文件,该文件看起来像您所要求的。

import csv 

data = [] 
for s in samples: 
    msg = 'Heads' if s==1 else 'Tails' 
    data.append(msg) 

with open('flip_file.csv', 'wb') as f: 
    writer = csv.writer(f) 
    writer.writerows(data) 
+3

请为'csv.writer'添加一个导入语句,作者doesn'不了解图书馆。 – ishaan

+0

好的电话。只需导入csv – SAMO

+2

python 3 csv模块需要文本模式,而不是字节模式文件+'newline ='''在https://docs.python.org/3/library/csv.html#csv.writer – Aprillion